关闭应用程序时无法使用服务并停止它(android)

时间:2019-06-25 07:55:58

标签: android service foreground-service

我的问题是,当我从最近的列表中清除程序时,该服务已停止并且无法正常工作。

这是在Android 5上发生的,在Android 4上没有问题。 我什至在清单中处理该服务,但是当该进程打开时,该服务未执行。(android:process=":process"

在该页面关闭后,我将在Android 5及更高版本上将此服务保留在前台,该服务将被删除并且什么也不会发生。

总而言之,我想每5秒替换一次我的位置和其他任务,以将用户显示为Notification,并且希望在服务中执行此操作。

启动活动中的服务:

if (!AppController.IsServiceRunning(TaxiService.class)) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
                startForegroundService(new Intent(this, TaxiService.class));
            else
                startService(new Intent(this , TaxiService.class));
} 

在manifest.xml中:

<service
       android:name=".TaxiService"
       enabled="true" />

服务中:

public class TaxiService extends BaseService {

    private Timer timer;
    private TimerTask timerTask;
    private long PERIOD = 60 * 1000;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId);
        startTimer();
        startForeground(Variable.NOTIFICATION_ID_FOR_WAITING_STUDENT , Notification.ForegroundServiceNotification());
        return START_STICKY;
    }

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

    @Override
    public void onDestroy() {
        super.onDestroy();
        sendBroadcast(new Intent("ServiceIsKilled"));
    }

    public void startTimer() {

        //set a new Timer
        timer = new Timer();

        //initialize the TimerTask's job
        initializeTimerTask();

        //schedule the timer, to wake up every 1 second
        timer.schedule(timerTask, 1000, PERIOD); //
    }

    public void initializeTimerTask() {
        timerTask = new TimerTask() {
            public void run() {
                WaitingStudent();
                GetLocation();
            }
        };
    }

1 个答案:

答案 0 :(得分:1)

您必须将Intent Service与方法

一起使用
startForeground()

如果您希望服务在运行时继续运行