我有一个Service
,它使用Handler
和Thread
每5秒运行一些代码。当我拨打stopSelf()
时,服务似乎已停止,因为从设备设置 - >应用程序 - >运行它不显示在那里。 但是线程内部的代码每隔5秒就会持续运行,尽管我已经停止了该服务。
即使服务已停止,为什么Handler
和Thread
仍然存在?当服务停止时,我如何停止Handler
和Thread
。服务器中的处理程序和线程继续运行,而服务似乎已停止
final Handler h = new Handler();
final int delay = 5000; // milliseconds
h.postDelayed(new Runnable() {
public void run() {
// do something
final SharedPreferences sharedPref = getSharedPreferences(
getString(R.string.prefs), Context.MODE_PRIVATE);
if (sharedPref != null) {
new Thread(new Runnable() {
@Override
public void run() {
// SOME CODE
Log.d("UPDATING"," something here");
isUpdated = updateToServer(data);
if(isUpdated) {
sharedPref.edit().putBoolean("updated",true).commit();
stopSelf();
}
}
}).start();
}
h.postDelayed(this, delay);
}
}, delay);
中的onDestroy可以调用handler.removeCallBacks(可运行) – Ramesh 2015-02-11 10:53:16