2012-03-14 96 views
0

我有一個發佈的應用程式,並收到了來自崩潰堆棧跟蹤:無法理解該堆棧跟蹤

android.view.WindowManager$BadTokenException: Unable to add window -- token 
[email protected] 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 =這個和的onCreate() 什麼是我的問題已經初始化?

回答

1

這可能是用戶在您的Asynctask完成之前「BACK」。

+0

我可以對此做任何事嗎? – michaelsmith 2012-03-14 19:18:28

+0

是的,在嘗試添加窗口之前檢查活動是否爲空,或者在 – 2012-03-14 19:18:59

+0

周圍添加一個try ... catch塊,這發生在我的主要活動中,所以我應該這樣做:if(co!= null)... – michaelsmith 2012-03-14 19:20:07

0

android.view.WindowManager $ BadTokenException:無法添加窗口 - 令牌
[email protected]無效;你的活動正在運行?

您的應用程序可能是剛剛重新創建,因爲屏幕旋轉或用戶按Home/Back或類似的事情發生。所以你的應用程序實際上沒有運行。

讓UI + AsyncTasks不會破壞活動生命週期,但有一些選項有點棘手。

例如爲: http://groups.google.com/group/android-developers/browse_thread/thread/e1d5b8f8a3142892

基本上你需要確保的AsyncTask不觸及UI雖然沒有UI。