簡體   English   中英

從活動中調用后台服務

[英]Calling background Service from an Activity

我有一個活動和一個后台服務。 我通過活動中的Intent啟動服務。 即使活動已關閉,服務也會無限期運行。 但是這里的問題是,如果我從任務管理器中清除了內存,服務將停止並且不會再次啟動,直到再次啟動活動。 我希望該服務在一段時間后自動啟動以清除內存。 我怎樣才能做到這一點? 請幫忙。

使用AlarmManager安排運行服務。

在您的主要(根)活動中:

@Override
public void onStop() {
    super.onStop();
    AlarmManager service = (AlarmManager) context.getSystemService(
        Context.ALARM_SERVICE);
    Intent i = new Intent(this, MyService.class);
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.SECOND, 30);
    PendingIntent pending = PendingIntent.getService(this, 0, intent,
        PendingIntent.FLAG_CANCEL_CURRENT);
    service.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
        REPEAT_TIME, pending);
}

這將在您的活動停止后30秒內啟動服務。 另外,您可以定義BroadcastReceiver,它將檢查服務是否正在運行並啟動它。 為此,只需創建廣播PendingIntent

您可以在Android服務教程中找到更多代碼和示例。

AlarmManager service = (AlarmManager) getApplicationContext().getSystemService(
                Context.ALARM_SERVICE);
            Intent i = new Intent(this, BackgroundService.class);
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.SECOND, 30);
            PendingIntent pending = PendingIntent.getService(this, 0, i,
                PendingIntent.FLAG_CANCEL_CURRENT);
            service.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),30000, pending);

此代碼為true 30000毫秒運行backgroundService

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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