【问题标题】:Android AsyncTask - Start Next Activit From onPostExecute - Bad Idea?Android AsyncTask - 从 onPostExecute 开始下一个 Activit - 坏主意?
【发布时间】:2010-12-12 22:43:33
【问题描述】:

我有一个活动,它在开始另一个依赖于刚刚插入的数据的活动之前执行一堆 SQLite 插入作为它的最后一个动作。

我刚刚将所有 db 内容移到了 AsyncTask 中...而且,是的,你猜对了,新活动在前一个插入完成之前被调用。

现在,我对数据库操作的速度感到满意,但是,如何让我的应用等待 AsyncTask 完成后再开始下一个活动?

我本来想从 onPostExecute 开始,但感觉不对,虽然我不知道如果是这样的话为什么会这样。

目前我打算在 pre/postExecute 中做的只是显示一个默认对话框......但是,这显然也失败了,因为下一个活动在 asyncTask 启动后立即开始:)

这里不需要使用 AsyncTask,还是有一种简单的方式可以说“哇,男孩,等一下!”? :)

【问题讨论】:

    标签: android android-asynctask


    【解决方案1】:

    可以在onPostExecute 上启动其他活动...事实上,在您的情况下听起来很合理。

    【讨论】:

    • 感谢您的回复。在这种情况下使用 AsyncTask 对我仍然有益吗?插入确实是唯一发生的事情,我唯一在等待的事情?是否有可能提高速度,仅仅因为我将工作从 UI 线程中移除?
    • 如果这是您唯一要做的事情:如果插入行需要很长时间,请使用 AsyncTask,否则您不需要。将工作从 UI 线程中移除的想法是,您可以执行需要超过 2 秒才能完成的事情,因此用户不会觉得您的应用程序被冻结。
    • 感谢您的帮助。在这和使我的 SQLite 东西成为事务性之间,我将 9 秒的操作缩短到不到 1 秒。非常棒,真的。
    • “需要超过 2 秒才能完成”-> 您确实应该考虑将主线程上的内容保持在 1 秒以下。否则 UI 会感觉对用户没有响应。 100ms 大约是最长的时间,远低于 20ms 以避免出现故障动画。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多