2010-05-17 15 views
2

我正在處理搜索存儲在數據庫中的位置的任務。之後,我必須在相應的位置放一個別針。我對快速搜索框(QSB)進行了修改,以搜索我應用中的數據庫。對於QSB性能,我遵循API演示中的搜索字典示例。當我點擊搜索建議時,它會重新加載當前的活動,並放下它的引腳。當點擊後退按鈕時,它會在Logcat中顯示下面的異常。爲什麼會發生。任何想法?Android中的ActivityThread異常?

我的日誌CAT價值:

05-17 15:16:30.572: ERROR/ActivityThread(17448): Activity com.example.brown.Bru_Maps has leaked IntentReceiver androi[email protected]432e6360 that was originally registered here. Are you missing a call to unregisterReceiver()? 
05-17 15:16:30.572: ERROR/ActivityThread(17448): android.app.IntentReceiverLeaked: Activity com.example.brown.Bru_Maps has leaked IntentReceiver androi[email protected]432e6360 that was originally registered here. Are you missing a call to unregisterReceiver()? 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.ActivityThread$PackageInfo$ReceiverDispatcher.<init>(ActivityThread.java:748) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.ActivityThread$PackageInfo.getReceiverDispatcher(ActivityThread.java:576) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.ApplicationContext.registerReceiverInternal(ApplicationContext.java:770) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.ApplicationContext.registerReceiver(ApplicationContext.java:757) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.ApplicationContext.registerReceiver(ApplicationContext.java:751) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:290) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.net.NetworkConnectivityListener.startListening(NetworkConnectivityListener.java:138) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at com.google.android.maps.MapActivity.onResume(MapActivity.java:232) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1225) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.Activity.performResume(Activity.java:3559) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2838) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2866) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1819) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.os.Looper.loop(Looper.java:123) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at android.app.ActivityThread.main(ActivityThread.java:4203) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
05-17 15:16:30.572: ERROR/ActivityThread(17448):  at dalvik.system.NativeStart.main(Native Method) 

什麼是Android中的活動線程異常?請幫忙。

回答

2

你必須在異常日誌你的答案..

你缺少unregisterReceiver()的調用?

你有沒有在你的應用程序註冊的廣播接收器?如果是的話,你應該叫註銷接收器之前摧毀你的活動。

編輯

嗨..

我看了一眼ConnectivityBroadcastReceiver我發現這個討論..

on Android Developers

on android google code

他們有同樣的問題..你可以發佈你的代碼嗎?

+0

我沒有註冊任何廣播接收文件。我只是使用getIntent()。那是問題嗎? – Praveen 2010-05-17 12:43:12

+1

我可以確認相同的問題(我在2.2)。我也沒有註冊任何接收器。 – 2010-06-29 15:04:49

4

我得到了同樣的問題,搜索後,我發現這個職位同一個問題

https://novoda.lighthouseapp.com/projects/63622/tickets/157-leak-receiver-searchresult

它表明該問題使用應用程序中的多個map activities時上升。

所以在我的應用程序的manifest.xml 文件我做了一個單獨的流程中每個地圖活動運行:

android:process=":p1" 
android:process=":p2" 

您可以在Android的文檔閱讀更多關於這一點。 http://developer.android.com/guide/topics/manifest/activity-element.html#proc

0

我也遇到過這個問題。對於我的情況,我使用電池指示燈,並且在onPause()或onDestroy()時不會銷燬它。剛發現電池指示燈是一個廣播接收器。

爲了解決我做了以下內容:

@Override 
public void onPause() 
{ 
    super.onPause(); 

    unregisterReceiver(myBatInfoReceiver); 
} 

@Override 
public void onResume() 
{ 
    super.onResume(); 

    registerReceiver(myBatInfoReceiver, 
      new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
}