1
我必須在MyService.java類中連續執行一些任務。爲此,我使用Handler
,但mHandler.postDelayed(this,40000);在給定時間後,不會被解僱。它在每秒之後被解僱。請幫我出處理程序不在延遲時間在我的後臺服務
public class SendMessageService extends Service {
private Handler mHandler = new Handler();
private Runnable task;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
registerReceiver(stopReceiver, new IntentFilter("com.android.STOP_HANDLER"));
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
task = new Runnable() {
@Override
public void run() {
dosomething();
mHandler.postDelayed(this, 40000);
}
};
try {
mHandler.postDelayed(task, 40000);
} catch (Exception e) {
e.printStackTrace();
}
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(stopReceiver);
}
private void dosomething() {
//perform my task
}
private BroadcastReceiver stopReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("receive","STOP");
mHandler.removeCallbacks(task);
}
};
}
檢查日誌也許有在''try'塊catch'一個異常,處理程序沒有得到最初分配給它肯定會觸發任何事情 –