【发布时间】:2015-01-19 08:53:38
【问题描述】:
概要:我需要一种方法来启动一项任务,并让它在应用程序的 onDestroy() 中持续存在直到它完成,或者能够从中断的地方继续。
在我的应用程序中,我有一个 ListView 包含来自数据库的一些项目。希望只有大约 10-30 个项目,但可能有数千个(如果用户从未清除它,尽管我有时会提示清除它)。
我已经设置了一个AsyncTask,以便在用户需要时从列表中清除所选项目。但是,我注意到 AsyncTask 在调用 onDestroy() 时被杀死,例如,如果用户选择所有要删除的项目,按删除,然后在任务仍在执行时将应用程序从“最近”中滑出。
我记得在某处了解到Service 比AsyncTask 存在的时间更长,因此当任务被终止时,我将要删除的数据交给我创建的Service。它是通过
intent.putIntegerArrayListExtra(list);
并在Service 中从中获取数据。 Service 比 AsyncTask 持续的时间要长得多(只有大约 4-6 秒),但仍然没有完全完成。我对 START_XXXX 标志知之甚少,但这对于这项任务来说是不好的做法,因为它们要么将整个列表发送回自身,要么永远真正停止。
从数据库中删除选定项目而不在应用程序被终止时停止的首选方法是什么,或者至少从停止的地方继续?
谢谢大家!
【问题讨论】:
-
你不能等到任务在你的 onDestroy() 开始时完成吗?
-
@BartHofma 这是可以接受的做法吗?如果是这样,你将如何做到这一点?谢谢
-
我不知道这是否可以接受,我会这样做。猜猜它还取决于您正在构建的应用程序类型。如果您使用以下方式启动活动,则可以等待活动完成:(intent 是您的活动) startActivityForResult(intent,0);//完成后,onResult 方法将运行以继续
标签: java android android-asynctask android-service