我正在创建一个应用程序,在那里我需要处理可能很大并且可能需要一些时间的数据。中断IntentService
现在我读了很多关于IntentService的内容,实际上我已经实现了它作为处理REST调用的通信类,但现在我试图将它用于长时间运行的数据处理。
我在标题栏中添加了一个进度指示器,但现在id可以在用户点击它时取消操作。
是否有这样做的一些优雅的方式?(有点像了Thread.interrupt())目前,我有一个静态布尔“运行”,我已经重写了onStartCommand到
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction() != null && intent.getAction().equals("stop")) {
running = false;
}
onStart(intent, startId);
return START_NOT_STICKY;
}
我觉得这比较麻烦和不够优雅,并认为我可能滥用IntentService来实现其无意的功能。有没有更好的方法来做到这一点?
stopSelf()不适用于我,因为我需要中断正在进行的操作。我试了一下,代码刚刚执行。
我想到的AsyncTask的,但即时通讯担心任务不会生存下来。(操作可以采取尽可能15分钟)
为避免AsyncTasks这样做是正确的:从[documentation](https://developer.android.com/reference/android/)中,“AsyncTasks理想地应该用于短操作(最多几秒钟) os/AsyncTask.html) – Sam 2013-03-14 15:32:31