假设以下代码:
public class MyApplication extends Application {
@Override
public void onCreate()
{
super.onCreate();
getApplicationContext().startService(new Intent(getApplicationContext(), MyService.class););
}
}
public class MyService extends IntentService {
private Handler mLoadContactsHandler;
public MyService() {
super(MyService.class.getName());
myHandler = new Handler();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return START_NOT_STICKY;
}
@Override
protected void onHandleIntent(Intent intent)
{
int delay = intent.getIntExtra("delay", 1000 * 60 * 5);
myHandler.postDelayed(updateTask, delay);
}
private Runnable updateTask = new Runnable() {
public void run() {
Thread thread = new Thread()
{
public void run()
{
... some task ...
}
};
thread.start();
myHandler.postDelayed(this, 1000*60*15);
}
};
}
即使退出应用,此服务仍会继续运行吗? (退出时使用后退按钮关闭应用程序)
我的意思是,这项服务从未真正完成。如果应用程序已关闭,如何退出服务?当然,我希望它能完成它正在做的事情。
编辑。我希望只要应用程序正在运行,服务就会在其间隔内继续运行。
答案 0 :(得分:0)
使用IntentService代替,以便Android系统管理它(比如完成时停止服务等)。
答案 1 :(得分:0)
Would this service keep running even if I exit the app? (Exit as in closing the app using back-button)<p>
是的,它会继续运行,除非android杀死它,它每天都会做几次。
How can I make the service quit if the app has been shut down. Of course, I would like it to finish what it's doing.<p>
AFAIK,人们可以知道活动/服务何时被销毁但无法知道应用程序何时被销毁(原因是android喜欢将应用程序保留在内存中,因此没有固定的时间)。所以,我建议你将stopSelf();
作为线程的run()方法的最后一行。这将在您的线程完成手头任务后停止服务。
public void run()
{
// ... some task ...
stopSelf();
}