[英]Stopping android service after activity destroyed
我有一個正在執行一些重復性后台任務的應用程序。 我正在通過setrepeating方法使用service和Alarmmanager。 停止此服務的唯一方法是在我的活動屏幕上顯示一個按鈕(當然android系統可以隨時出於任何原因將其殺死,但我不在乎android系統會做什么)。 我的問題是,一段時間后我的活動被android系統破壞了,我的服務會一直運行,除非Android將其殺死。 我的問題是創建新活動后如何獲得該服務的引用以停止該服務(我假設我是在舊活動被銷毀后創建新活動)?
考慮bindService和unbindService 。 創建活動后,可以調用bindService
,並使用返回的綁定程序來與服務進行通信。 如果您不想在活動結束后取消綁定以終止服務,則可以綁定和啟動服務。
另一種方法是使用LocalBroadcastManager以便在活動和服務之間進行通信。
在MainActivity上使用bind服務和unbind服務方法,以便在用戶或android系統顯式銷毀您的應用活動,並同時銷毀服務類時,可以調用unbind服務onDestroy()
。
將此帖子用作指南: 示例:使用消息傳遞在活動和服務之間進行通信
我想我無法清楚地解釋我的問題。 但是我在這篇文章中找到了答案。 如何獲得對運行服務的引用? 達維德·薩吉達克
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if ("your.service.classname".equals(service.service.getClassName())) {
return false;
}
}
return true;
}
if(isMyServiceRunning()) {
stopService(new Intent(ServiceTest.this,MailService.class));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.