是否可以在后台进行片段交易?如果没有,那么我可以使用哪种替代方案?

时间:2016-07-05 13:59:06

标签: android android-fragments android-asynctask

我正在制作一个Android应用程序,它涉及每4秒检查一次状态并根据它采取一些行动。因此,当我获得状态'已取消'时,我需要进行片段交易。为了每4秒检查一次,我使用包含在timentask中的异步任务来发出get请求。假设应用程序是后台,异步任务每4秒运行一次,如果我在应用程序仍在后台时“取消”,我在进行片段事务时会收到以下错误。这样做的正确方法是什么?

    java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1527)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1545)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:654)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:621)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at com.dride.android.dride.MapActivity$15.run(MapActivity.java:805)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5254)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
07-05 19:20:01.160 11822-11822/com.dride.android.dride E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

我尝试在处理程序中执行事务,但仍然遇到相同的错误。

EDIT 片段事务代码

fm.beginTransaction()
                    .remove(f1)
                    .add(R.id.fm_options_list, optionsFragment, "Option List")
                    .commit();

注意片段f1是一个,其中所有这一切都在发生。 (异步任务,每4秒检查一次并在收到'取消'时进行交易)

0 个答案:

没有答案