2011-06-20 84 views
4

最近我開始使用AsyncTask,發現使用它的一些問題。重新打開活動時出現AsyncTask(doInBackground方法)問題

我有這ListActivity(CatalogActivity),我用AsyncTask重新加載它,因爲它是某種樹的邏輯。每次我在列表中選擇一個項目時,我會進行一些計算並在doInBackground方法中顯示進度對話框,而在onPostExecute中,我重新加載列表並取消進度。一切正常。

im完成後(我達到最後一級),我開始另一個活動(LoginActivity)。這個新的活動有「後退」菜單按鈕,開始我以前提到的列表活動。它開始活動,當我點擊doInBackground方法的負載部分時,我得到這個時髦的例外。真正有趣的部分是,如果我在我的加載方法上設置斷點,並逐步完成所有工作!

我錯過了什麼?

這裏是我的CatalogActivity的doInBackground方法(如錯誤發生):

protected String doInBackground(String... params) { 
     catalogAdapter.mappingServicesCatalog.loadFromRml(new RIoConnectionManagerImpl(currentActivity.getApplicationContext()), params[0], null, 120000, 500000); 
     if (catalogAdapter.urlMapping.size() == 0) 
     { 
      catalogAdapter.urlMapping.add(params[0]); 
     } 
     else 
     { 
      if (catalogAdapter.urlMapping.get(catalogAdapter.urlMapping.size() - 1) != params[0]) 
      { 
       catalogAdapter.urlMapping.add(params[0]); 
      } 
     } 
     return ""; 
    } 

這裏是logcat的記錄:

06-20 11:38:21.109: ERROR/AndroidRuntime(22789): FATAL EXCEPTION: AsyncTask #4 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789): java.lang.RuntimeException: An error occured while executing doInBackground() 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at android.os.AsyncTask$3.done(AsyncTask.java:200) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at java.lang.Thread.run(Thread.java:1096) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789): Caused by: java.lang.NullPointerException 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at si.realis.rmap.android.CatalogActivity$CatalogAdapter.access$1(CatalogActivity.java:35) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at si.realis.rmap.android.CatalogActivity$LoadRMLCatalog.doInBackground(CatalogActivity.java:197) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at si.realis.rmap.android.CatalogActivity$LoadRMLCatalog.doInBackground(CatalogActivity.java:1) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
06-20 11:38:21.109: ERROR/AndroidRuntime(22789):  ... 4 more 
06-20 11:38:44.086: ERROR/WindowManager(22789): Activity si.realis.rmap.android.CatalogActivity has leaked window [email protected] that was originally added here 
06-20 11:38:44.086: ERROR/WindowManager(22789): android.view.WindowLeaked: Activity si.realis.rmap.android.CatalogActivity has leaked window [email protected] that was originally added here 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.view.ViewRoot.<init>(ViewRoot.java:247) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.view.Window$LocalWindowManager.addView(Window.java:424) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.app.Dialog.show(Dialog.java:241) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.app.ProgressDialog.show(ProgressDialog.java:107) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.app.ProgressDialog.show(ProgressDialog.java:90) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at si.realis.rmap.android.CatalogActivity.loadRMLCatalog(CatalogActivity.java:135) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at si.realis.rmap.android.CatalogActivity$CatalogAdapter.Initialize(CatalogActivity.java:60) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at si.realis.rmap.android.CatalogActivity$CatalogAdapter.<init>(CatalogActivity.java:45) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at si.realis.rmap.android.CatalogActivity.onCreate(CatalogActivity.java:119) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.os.Looper.loop(Looper.java:123) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at java.lang.reflect.Method.invoke(Method.java:521) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) 
06-20 11:38:44.086: ERROR/WindowManager(22789):  at dalvik.system.NativeStart.main(Native Method) 
06-20 11:49:00.402: ERROR/WifiManager(22835): showApDialog 
06-20 11:49:04.699: ERROR/HierarchicalStateMachine(2475): TetherMaster - unhandledMessage: msg.what=3 
06-20 11:49:07.511: ERROR/WifiManager(22835): showApDialog 
06-20 11:49:14.648: ERROR/WifiManager(22835): showApDialog 
06-20 11:49:23.109: ERROR/libnetutils(2475): dhcp start cmd 11 : [dhcpcd:-ABK] 
06-20 11:49:23.597: ERROR/HierarchicalStateMachine(2475): TetherMaster - unhandledMessage: msg.what=3 
06-20 11:49:23.965: ERROR/gps_BRCM(2475): BrcmLbs_sync() return error. 
+0

需要在你的代碼摘要中的行號,以便與NPE stacktrace對齊:si.realis.rmap.android.CatalogActivity $ CatalogAdapter.access $ 1(CatalogActivity.java:35) - 哪一行我你的片段是第35行嗎? '.access $ 1()'意味着它使用合成訪問器方法請求私有成員,並且該成員看起來爲空。你說它「開始」前一個活動,但爲什麼不只是讓BACK鍵完成它,並完成最高活動,恢復以前的活動? – Joe

+0

你是對的。典型的noob錯誤。我有活動和一個適配器。在適配器構造函數中,我有一些代碼啓動了這個異步任務。當我調試適配器同步,但在運行時有錯誤。我從方法中的適配器構造函數中刪除了代碼,並且它可以工作。感謝您的時間 !馬虎在我身邊工作... – no9

回答

0

我已經通過固定我的代碼(工作馬虎)解決了這一問題

相關問題