Android 无法理解此堆栈跟踪

Android 无法理解此堆栈跟踪,android,Android,我有一个已发布的应用程序,并从崩溃中收到堆栈跟踪: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@4051d698 is not valid; is your activity running? at android.view.ViewRoot.setView(ViewRoot.java:535) at android.view.Wind

我有一个已发布的应用程序,并从崩溃中收到堆栈跟踪:

android.view.WindowManager$BadTokenException: Unable to add window -- token   
 android.os.BinderProxy@4051d698 is not valid; is your activity running?
at android.view.ViewRoot.setView(ViewRoot.java:535)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:203)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:117)
at android.view.Window$LocalWindowManager.addView(Window.java:424)
at android.app.Dialog.show(Dialog.java:241)
at android.app.ProgressDialog.show(ProgressDialog.java:107)
at android.app.ProgressDialog.show(ProgressDialog.java:90)
at com.mytaxicontrol.MyTaxiControlActivity$executeGEO.void onPreExecute()(Unknown Source)
at android.os.AsyncTask.execute(AsyncTask.java:391)
at com.mytaxicontrol.MyTaxiControlActivity$37.void run()(Unknown Source)
at android.app.Activity.runOnUiThread(Activity.java:3743)
at com.mytaxicontrol.MyTaxiControlActivity.void geo()(Unknown Source)
看起来无法显示进度对话框。以下是相关代码:

public void onPreExecute() {
        if(isGeoRunning)return; 

        if (loading == null || !loading.isShowing())
            loading = ProgressDialog.show(co, "",
                    "Retrieving Geolocation...", true);
    }
请注意,co=this,并且已在onCreate()中初始化
我的问题是什么?

这可能是当用户在异步任务完成之前“返回”时

android.view.WindowManager$BadTokenException:无法添加窗口--标记
android.os。BinderProxy@4051d698无效;你的活动正在进行吗

您的应用程序可能只是因为屏幕旋转或用户按下home/back或类似事件而被重新创建。所以你的应用程序实际上没有运行

让UI+AsyncTasks不中断活动生命周期有点棘手,但有一些选项

e、 g:


基本上,您需要确保AsyncTask在没有UI的情况下不会触及UI。

对此我能做些什么吗?是的,在尝试添加窗口之前检查活动是否为null,或者添加一个try。。。抓住周围的障碍试试看。。。捕获应该有效;)这可能是因为用户离开应用程序或转到其他活动。