Android的:从onRestoreInstanceState调用时AsynchTask失败()

文章标签: android,asynchtask
2014-12-19 9:21:16     人阅读    


Android:在onRestoreInstanceState()方法调用时AsynchTask失败

我有一个android应用程序,UI在初始化的时候需要一点点工作。所以,我尝试通过使用 AsynchTask 来完成,启动的时候打开一个对话框,AsynchTask 在取到数据后更新ui界面,于是我在OnRestoreInstanceState() 方法中添加了AsynchTask 的调用功能  ,这样就能在屏幕旋转的时候重建UI界面。然而,当我在onRestorInstanceState()方法中调用MyAsynchTask.execute(),我得到以下异常:

01-05 12:28:45.194: ERROR/WindowManager(409): android.view.WindowLeaked: Activity com.MyActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@43e70368 that was originally added here

01-05 12:28:45.194: ERROR/WindowManager(409):     at android.view.ViewRoot.<init>(ViewRoot.java:247)
01-05 12:28:45.194: ERROR/WindowManager(409):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
01-05 12:28:45.194: ERROR/WindowManager(409):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
01-05 12:28:45.194: ERROR/WindowManager(409):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
01-05 12:28:45.194: ERROR/WindowManager(409):     at android.app.Dialog.show(Dialog.java:241)
01-05 12:28:45.194: ERROR/WindowManager(409):     at com.MyClass$MyAsynchTask.onPreExecute(MyClass.java:428)

处理方法


第1步:确保你的 AsyncTask  是一个静态内部类或者完整的类
第2步:手动关联activity和task,task构造的时候应该把activity 当做一个参数传入,并作为task的一个成员变量,使他们保持联系
第三步:在onRetainNonConfigurationInstance()方法中返回对象
第四步:在新 activity实例化的onCreate()方法中,通过getLastNonConfigurationInstance()获得现有的task对象并且通过 setter方法重新关联  activity 和  task
第4步:如果需要,修改onPostExecute()不关联 activity。


原文地址:http://www.itmmd.com/201412/343.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android 开发,在按钮触发后想布局管理器中添加一个新的视图(TextView)   上一篇
下一篇  Stop service in an activity
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!