1

我创建了一个服务:

public class ActivityService extends Service {

    private static StopWatch timer = new StopWatch();
    private long tid;
    private GPSMonitor gps;
    private Context ctx;
    private boolean isRunning = false;

    private NotificationManager nm;
    protected void onHandleIntent(Intent workIntent) {

        if (workIntent == null)
            return;

        int state = workIntent.getIntExtra("state", -1);

        Log.d("bla", isRunning + "");
        Log.d("bla", state + "");
        if (state == 0)
        {
            if (isRunning)
                return;

            tid = workIntent.getLongExtra("tid", 0);

            isRunning = true;

        }
        else if (state == 1)
        {
            ...
        }
        else if (state == 2)
        {
            ....
        }
    }

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

        ctx = this;
        onHandleIntent(intent);
        return START_STICKY;
    }

在我的活动中:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_track);

        Log.d("bla", "create");
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        reMyreceive=new Myreceiver();


        Intent i= new Intent(this, ActivityService.class);
        i.putExtra("tid", 123);
        i.putExtra("state", 0);
        startService(i);

除了以下情况,一切都很好: 1. 服务已启动。2. 我退出活动(暂停) 3. 我浏览了 5-6 个不同的应用程序。4. 通过服务生成的通知返回活动。5. Activity 将继续 onCreate,因此将执行 startService。6.服务是从头开始创建的。(isRunning = false!即使它是真的......)

我正在努力保持服务的持久性。这是为 GPS 运行应用程序制作的。在我看来,好像当我在设备中浏览不同的应用程序时,android 决定 onCreate 我的活动(这很好)但服务从头开始重新启动!

我怎样才能保持它尽可能持久?

谢谢

4

0 回答 0