我正在创建一个应用程序,我需要在其中处理可能非常庞大且可能需要一些时间的数据。
现在我在 IntentService 上阅读了很多东西,实际上我已经将它实现为一个用于处理 REST 调用的通信类,但现在我试图将它用于长时间运行的数据处理。
我在标题栏中添加了一个进度指示器,但现在我希望能够在用户单击它时取消操作。
有没有一些优雅的方法可以做到这一点?(类似于 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() 对我不起作用,因为我需要中断正在做的事情。我试过了,代码继续执行。
我想到了异步任务,但我担心任务无法生存。(操作可能需要长达 15 分钟)