我有一個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