【发布时间】:2016-10-05 05:43:44
【问题描述】:
我必须在 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);
}
};
}
【问题讨论】:
-
检查您的日志,也许
trycatch块中有异常,并且处理程序最初没有被分配,所以它肯定会触发任何事情