如果应用程序从内存中销毁,如何使服务保持活动状态

时间:2018-04-04 15:47:44

标签: java android service

我只想做的主要事情是,当我的应用程序关闭时,我必须检查我的webservice,当它在webservice上获得任何警报,然后它显示通知或活动。 我阅读了有关服务并做了一个例子但是当我从最近的应用程序中删除应用程序时,有时候服务重新启动或某些服务被杀死了。

代码:

package com.usamaakmal.startedservice;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.SystemClock;
import android.widget.Toast;

public class NewService extends Service {
    public NewService() {
    }

    int i = 0;

    Handler handler = new Handler();
    Thread runnable = new Thread() {
        @Override
        public void run() {
            i++;
            Toast.makeText(getBaseContext(), "Hello World! " + i, Toast.LENGTH_SHORT).show();
            handler.postDelayed(this,1000);
        }
    };

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

    @Override
    public void onCreate() {
        Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
        handler.postDelayed(runnable,2000);
    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show();

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

}

1 个答案:

答案 0 :(得分:0)

从最近的应用列表中删除应用已杀死应用进程。从START_STICKY返回onStartCommand()意味着您希望系统在服务被杀死后重新启动服务(因为您从最近的列表中移除了应用程序或因为资源耗尽而导致系统终止服务)。

如果您希望保持服务(及其流程),您将需要前台服务。 系统尝试尽可能长时间地保持前台服务的活动。 请参阅:Running service in foreground