重新启动服务时如何存储对象的状态

时间:2012-11-28 17:24:44

标签: android multithreading service android-lifecycle

我的应用程序启动了一个产生线程的服务。该线程每5秒进行一次轮询。 Android可以根据需要重新启动我的服务。我试图存储轮询线程,所以当服务重新启动时,它可以使用现有的轮询线程。

这是onStartCommand()方法:

public int onStartCommand(Intent intent, int flags, int startId)
{
    if(intent == null)
    {
        Log.d("screener", "onStartCommand was called with null intent. System must've killed and restarted service...?");
    }
    else
    {
        processToMonitor = intent.getStringExtra("com.screener.processToMonitor");
        Log.d("screener", "onStartCommand was called");

    }

    if(pollThread == null)
    {
        poller = new Poller(this, wakeLock, processToMonitor);
        pollThread = new Thread(poller);
        pollThread.start();
        Log.d("screenon", "polling thread was not already running. Going to start it");
    }
    else
    {
        Log.d("screener", "polling thread has already been running. Not going to restart it");
    }

    return START_STICKY;
}

当传递的Intent对象为null时,这表示服务已重新启动,因此我可以成功检测到这种情况。我想要存储的对象是poller(或pollerThread,它封装了轮询器)。我试过让它静止不起作用。我也覆盖了Application并在那里存储了一个实例,但它仍然没有持久化。

那么,重新启动服务时如何存储我的对象?或者,我是否接受Android清理所有内容并简单地重新启动线程?

1 个答案:

答案 0 :(得分:0)

为什么要存储线程?让它“死”,一旦你的服务重新启动,新的轮询线程就会启动。