亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

后臺2分鐘后如何調用方法

后臺2分鐘后如何調用方法

DIEA 2021-04-12 17:23:16
我需要在2分鐘后調用一個方法。我已經嘗試過處理程序和計時器,但是當應用程序關閉時它不起作用。然后我有呼叫計時器在服務中,單擊按鈕即可啟動服務,并在2分鐘后停止服務。它可以工作,但問題是服務有時會自行調用。下面是我的代碼。MyService類別public class MyService extends Service {private static Retrofit retrofit = null;@Overridepublic IBinder onBind(Intent intent) {    throw new UnsupportedOperationException("Not yet implemented");}@Overridepublic void onCreate() {    new CountDownTimer(120000, 1000) {        public void onTick(long millisUntilFinished) {            Log.d("message", "start");        }        public void onFinish() {            Log.d("message", "finish");            callMyMethod();            stopService(new Intent(MyService.this, MainActivity.class));        }    }.start();}我從那里開始服務的MainActivity類。stopService(new Intent(getContext(), MyService.class));startService(new Intent(getContext(), MyService.class));顯現<service android:name="MyService" android:enabled="true" android:exported="true"/>注意:我只想按一下按鈕即可致電服務,并在2分鐘后停止服務。請尋求幫助以解決此問題,或者如果除服務之外還有其他好的解決方案。
查看完整描述

2 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

覆蓋onStartCommand 服務并返回START_NOT_STICKY 它不會重新啟動


public void onStartCommand()

{

     return START_NOT_STICKY

}

和使用stopSelf()insted的的stopService(new Intent(getContext(), MyService.class));


查看完整回答
反對 回復 2021-04-28
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

應用關閉后,您的服務將無法運行,請閱讀后臺限制。這實際上不是Service用例。

解決方案可能是您的問題是AlarmManager。將警報設置為精確到2分鐘后,接收器將在觸發時被調用。使用前請AlarmManger閱讀setExactAndAllowWhileIdle()setExact()。

或者,您也可以使用WorkManager設置精確作業。但是,如果您不需要,這將是一個過大的殺傷力Job Constraints。因此,如果您的工作不取決于網絡連接之類的任何約束或其他約束,則可以使用AlarmManger。

PS:-如果您的任務取決于網絡連接,則應選擇WorkManager。使用WorkManager閱讀計劃任務。


查看完整回答
反對 回復 2021-04-28
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號