我的应用程序启动了一个产生线程的服务。该线程每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清理所有内容并简单地重新启动线程?
答案 0 :(得分:0)
为什么要存储线程?让它“死”,一旦你的服务重新启动,新的轮询线程就会启动。