簡體   English   中英

應用銷毀后,Android Services進入睡眠模式

[英]Android Services goes to sleep mode when app destroyed

當應用關閉並注釋掉Toast消息時,sendBroadcast(intent)不會傳遞數據,但是當Toast消息在計時器內打開時,它可以正常工作。 聽起來很有趣,但是需要一個解決方案,以便在應用被銷毀時如何運行此服務。

import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.os.CountDownTimer;
import android.os.IBinder;

@SuppressLint("SetTextI18n")
public class BroadcastService extends Service {

    public static final String COUNTDOWN_BR = "com.example.broadcast_receiver";
    private CountDownTimer _Timer;

    @Override public int onStartCommand(Intent intent, int flags, int startId) {

        _Timer = new CountDownTimer(15000, 1000) {

            public void onTick(long millisUntilFinished) {
                Intent intent = new Intent(COUNTDOWN_BR);
                intent.putExtra("countdown", millisUntilFinished);
                BroadcastService.this.sendBroadcast(intent);
                //Toast.makeText(BroadcastService.this, millisUntilFinished/1000+"", Toast.LENGTH_SHORT).show();
            }

            public void onFinish() {
                _Timer.cancel();
            }
        }.start();

        return START_NOT_STICKY;
    }

    @Override public IBinder onBind(Intent arg0) {
        return null;
    }
}

對於您而言,服務由您的應用程序啟動,這意味着它將在主進程上運行。 因此,在您的應用程序終止時,該服務也會終止。

為了不停止進程。 您可能需要研究服務的onTaskRemoved onTaskRemoved ,您可以發送廣播以再次啟動該服務。

Intent intent = new Intent("com.android.ServiceStopped");
sendBroadcast(intent);

暫無
暫無

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

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