2012-12-17 21 views
0

在我的monodroid應用程序中,我有一個活動,用戶可能會對它進行roatate。 當幾個時間背對背旋轉它,它會導致此錯誤:在monodroid中旋轉幾次時的活動fade

12-17 11:58:40.367: E/WindowManager(2115): Activity myapp.myActivity has leaked window [email protected] that was originally added here 
12-17 11:58:40.367: E/WindowManager(2115): android.view.WindowLeaked: Activity myapp.myActivity has leaked window [email protected] that was originally added here 
12-17 11:58:40.367: E/WindowManager(2115): at android.view.ViewRoot.<init>(ViewRoot.java:275) 
12-17 11:58:40.367: E/WindowManager(2115): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
12-17 11:58:40.367: E/WindowManager(2115): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
12-17 11:58:40.367: E/WindowManager(2115): at android.view.Window$LocalWindowManager.addView(Window.java:430) 
12-17 11:58:40.367: E/WindowManager(2115): at android.app.Dialog.show(Dialog.java:288) 
12-17 11:58:40.367: E/WindowManager(2115): at myapp.myActivity.n_onCreate(Native Method) 
12-17 11:58:40.367: E/WindowManager(2115): at myapp.myActivity.onCreate(PropertyShowActivity.java:77) 
12-17 11:58:40.367: E/WindowManager(2115): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
12-17 11:58:40.367: E/WindowManager(2115): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780) 
12-17 11:58:40.367: E/WindowManager(2115): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837) 
12-17 11:58:40.367: E/WindowManager(2115): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3242) 
12-17 11:58:40.367: E/WindowManager(2115): at android.app.ActivityThread.access$1600(ActivityThread.java:132) 
12-17 11:58:40.367: E/WindowManager(2115): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1037) 
12-17 11:58:40.367: E/WindowManager(2115): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-17 11:58:40.367: E/WindowManager(2115): at android.os.Looper.loop(Looper.java:143) 
12-17 11:58:40.367: E/WindowManager(2115): at android.app.ActivityThread.main(ActivityThread.java:4196) 
12-17 11:58:40.367: E/WindowManager(2115): at java.lang.reflect.Method.invokeNative(Native Method) 
12-17 11:58:40.367: E/WindowManager(2115): at java.lang.reflect.Method.invoke(Method.java:507) 
12-17 11:58:40.367: E/WindowManager(2115): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
12-17 11:58:40.367: E/WindowManager(2115): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
12-17 11:58:40.367: E/WindowManager(2115): at dalvik.system.NativeStart.main(Native Method) 
12-17 11:58:40.377: W/MapActivity(2115): Recycling dispatcher android_maps_conflict_a[email protected]40626398 

我不知道這是什麼。 可以幫助我嗎?

我也有上面的錯誤,然後這個信息:

Recycling dispatcher android_maps_conflict_a[email protected]40626398 

回收地圖對象。 將目標GC堆從33.796MB鎖定到32.000MB 對於此過程,395280字節的外部分配太大。 VM不會讓我們從33.789MB分配395280字節 鉗目標GC堆32.000MB

我有我的活動有一定的圖像,與通用圖像裝載機 加載難道是因爲他們的? 如果它真的如何我可以解決這個問題?

回答

0

如果不改變佈局或需要重新配置/重新加載控件或佈局,你可能要考慮增加一個屬性的變化是這樣的:

[Activity(Label = "MyActivity", Icon = "@drawable/MyActivity", Theme = "@style/AppTheme" 
       , ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation)] 

Android.Content.PM.ConfigChanges.Orientation物業通知的活動,一y方向的變化將需要手動處理。因此,如果您只是希望在不重新啓動活動的情況下旋轉視圖,則更改該屬性應該可以解決您的問題。

如果您將需要更改佈局或需要對方向更改採取操作,則需要覆蓋方法更改OnConfigurationChanged方法。

有關此過程的更多信息,請參見Xamarin Docs Site。請參閱「防止活動重新啓動」部分

0

可能的是,您在某處創建了內存泄漏。檢查你是否不存儲對Gui對象的引用。

+0

當然,我沒有它。因爲我不知道應該如何做存儲引用gui.can你幫我如何做到這一點? – user1682893

0

看來你在OnCreate()方法中創建了一個對話框(或從對話框派生的類)。該對話框使用一個泄漏的內部類PhoneWindow。在旋轉設備時,活動將貫穿整個生命週期,並且您應該清理對話框。建議的地方是在onPause()方法:

protected override void OnPause() 
{ 
    base.OnPause(); 

    if (this.dlg != null) 
     this.dlg.Dismiss(); 
} 

這裏描述的活動週期: https://developer.android.com/reference/android/app/Activity.html

+0

我使用monodroid,我的活動類沒有任何屬性'dlg'name.and也沒有任何東西像對話框。我應該使用這個porpose? – user1682893

+0

我認爲這不是關於this.i有一個其他活動,也有圖像庫,並通過通用圖像加載器顯示他們的圖像,並沒有任何對話。在這個活動中,我也有這個問題。任何機構都可以說我可以存儲基於'snapix'回答的gui引用? – user1682893

+1

沒有顯示更多的代碼,我們只能猜測。也許你應該提供一個最小代碼示例,其中錯誤仍然顯示。當我遇到問題時,我得到了確切的堆棧跟蹤,並按照我所描述的解決了問題。 – vividos