自动挂钩到 Activity 生命周期方法的异步任务库

Posted

技术标签:

【中文标题】自动挂钩到 Activity 生命周期方法的异步任务库【英文标题】:Async task library that automatically hooks into Activity lifecycle methods 【发布时间】:2016-12-07 19:47:24 【问题描述】:

我正在寻找一个库,它可以简化执行异步操作(网络请求、大量数据解析等),并且它的回调将在正确的时间被调用,而无需我解决它。

我举几个例子:

    片段事务 - 如果我想在异步任务完成时执行片段事务,那么我需要确保活动处于“恢复后”状态,否则我会得到臭名昭著的 IllegalStateException .这意味着两件事:首先在异步任务回调中,我需要检查活动是否恢复后。其次,如果不是恢复后,那么我需要在活动上设置一个成员变量,一旦调用 onPostResumeonResumeFragments,我将执行片段事务。 Loaders - 当使用加载器时,在其 onLoadFinished 方法中我仍然遇到与 (1) 相同的问题,但我还需要在 Handler 中执行片段事务,否则我会得到另一个 IllegalStateException,表明在 onLoadFinished 方法中无法完成片段事务。

基本上,结果是当前需要做很多变通方法,以确保在异步回调中执行任何操作之前,android 生命周期处于“正确”状态。即使这意味着这个库需要延迟回调调用,直到活动恢复。

我正在寻找的是一个库,它将确保在调用异步回调时,相应的活动已经处于正确的状态,我不需要做任何手动检查,可以继续片段交易或其他我想做的事情。

不用说,它应该正确考虑轮换期间触发的生命周期事件。

你们知道有什么图书馆可以做到这一点吗?

谢谢:)

【问题讨论】:

要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。 为什么“对”是粗体的? 我在这里提供了 Android 开发人员面临的一个真正具体的问题,并在这里提供了我迄今为止尝试过的内容(参见 (1) 和 (2)),我得到了 -4 ?严重地?我不得不说,它并不能真正促进一种感觉良好/安全的提问环境,这是 *** 所代表的基础。我用单词解决方案替换单词库有关系吗? 删除了“正确”单词的粗体。 【参考方案1】:

无论您选择使用什么代码,您都需要了解生命周期。也就是说,在执行片段事务之前,您总是必须检查您的片段和活动是否处于正确状态。在加载程序的情况下,您可以检查状态,然后使用 commitAllowingStateLoss 代替提交,这将消除对处理程序的需要。

但这只能在确保您要转换的片段仍然处于活动状态后才能完成。不幸的是,目前还没有一种直接的方法来设置工作流,当网络调用成功时,您可以转换到下一个屏幕或片段。

【讨论】:

以上是关于自动挂钩到 Activity 生命周期方法的异步任务库的主要内容,如果未能解决你的问题,请参考以下文章

Activity的生命周期

Activity的生命周期

[Android]Activity的生命周期

activity生命周期

Fragment与Activity生命周期关系

Android中,activity生命周期是指啥?