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

时间:2016-08-02 12:41:40

标签: android android-fragments asynchronous android-lifecycle

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

我举几个例子:

  1. 片段事务 - 如果我想在异步任务完成时执行片段事务,那么我需要确保该活动位于" post resume"状态,否则我得到了臭名昭着的 IllegalStateException 。这意味着两件事:首先在异步任务回调中我需要检查活动是否已恢复。其次,如果它没有后续恢复,那么我需要在活动上设置一个成员变量,一旦 onPostResume onResumeFragments 被调用,那么我就开始了执行片段事务。
  2. Loaders - 当使用加载器然后在其 onLoadFinished 方法中,我仍然遇到与(1)中相同的问题,但我还需要在<1中执行片段事务em> Handler ,否则我得到另一个 IllegalStateException ,表明无法在 onLoadFinished 方法中完成片段事务。
  3. 基本上结果是,目前需要做很多变通办法,以确保Android生命周期在&#34;正确&#34;在异步回调中执行任何操作之前的状态。即使这意味着该库需要延迟回调调用,直到活动恢复。

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

    不言而喻,它应该正确地解释在轮换期间触发的生命周期事件。

    你们有没有知道这样做的图书馆?

    谢谢:)

1 个答案:

答案 0 :(得分:0)

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

但这只能在确保您正在转换的片段仍处于活动状态之后才能完成。遗憾的是,目前还没有一种简单的方法来设置工作流程,当网络调用成功时,您将转换到下一个屏幕或片段。