簡體   English   中英

活動銷毀后停止android服務

[英]Stopping android service after activity destroyed

我有一個正在執行一些重復性后台任務的應用程序。 我正在通過setrepeating方法使用service和Alarmmanager。 停止此服務的唯一方法是在我的活動屏幕上顯示一個按鈕(當然android系統可以隨時出於任何原因將其殺死,但我不在乎android系統會做什么)。 我的問題是,一段時間后我的活動被android系統破壞了,我的服務會一直運行,除非Android將其殺死。 我的問題是創建新活動后如何獲得該服務的引用以停止該服務(我假設我是在舊活動被銷毀后創建新活動)?

考慮bindService和unbindService 創建活動后,可以調用bindService ,並使用返回的綁定程序來與服務進行通信。 如果您不想在活動結束后取消綁定以終止服務,則可以綁定和啟動服務。

另一種方法是使用LocalBroadcastManager以便在活動和服務之間進行通信。

最后,考慮使用OttoEventbus-兩個很棒的開源項目,用於在android項目中的組件之間進行通信。

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM