这可能是另一个问题的重复,我不确定。我读过类似的问题,但要么无法理解,要么无法成功应用给定的解决方案。
我创建了一个具有多个选项卡的应用程序。当用户滑入选项卡时,大多数选项卡使用 ASyncTask 更新数据。然而,当 AST 仍在运行时,当活动发生变化时(这种情况经常发生;例如,当用户旋转屏幕或使用后退按钮退出时),应用程序将强制关闭 (ANR)。
这是我在 LogCat 中看到的情况:
10-30 11:30:01.422: E/AndroidRuntime(4687): FATAL EXCEPTION: main
10-30 11:30:01.422: E/AndroidRuntime(4687): java.lang.NullPointerException
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.appconstructor.khcreates.Core$refreshList.onPostExecute(Core.java:913)
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.appconstructor.khcreates.Core$refreshList.onPostExecute(Core.java:1)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.AsyncTask.finish(AsyncTask.java:631)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.AsyncTask.access$600(AsyncTask.java:177)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.Handler.dispatchMessage(Handler.java:99)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.os.Looper.loop(Looper.java:137)
10-30 11:30:01.422: E/AndroidRuntime(4687): at android.app.ActivityThread.main(ActivityThread.java:4745)
10-30 11:30:01.422: E/AndroidRuntime(4687): at java.lang.reflect.Method.invokeNative(Native Method)
10-30 11:30:01.422: E/AndroidRuntime(4687): at java.lang.reflect.Method.invoke(Method.java:511)
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-30 11:30:01.422: E/AndroidRuntime(4687): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-30 11:30:01.422: E/AndroidRuntime(4687): at dalvik.system.NativeStart.main(Native Method)
据我所知,ASyncTask(刷新列表)无法处理没有应用程序可以应用更改的事实。
我想做的是制作一个在没有活动时不会强制关闭的应用程序。
- 如果活动停止,我希望 ASyncTask 停止
- 或者我希望应用程序只保持任务运行,而不是强制关闭(例如:如果没有连接活动,则 onPostExecute() 不会发生任何事情。
如果有人需要我的 onPostExecute() 代码来解决问题,请告诉我。
这一直困扰着我一段时间,我无法自己解决这个问题。有了这个错误,我的应用程序的体验非常糟糕。非常感谢您的帮助!
提前致谢!