2016-04-24 51 views
1

我聽到的東西它是如何不好用setContentView()它是確定在

Pattern "One activity, multiple views": Advantages and disadvantages

但是我想知道的onResume()使用的setContentView()一次,這將是不可能的,我的申請將導致內存泄漏,如果我在我的活動的onResume()方法中使用setContentView()一次?

每當用戶打開我的應用程序時,它會檢查是否在設置中啓用了某些功能。如果它已被啓用,則應用程序使用與原始屏幕相比不同的屏幕。

爲此我的代碼看起來是這樣的:

@Override 
    protected void onResume() { 
     super.onResume(); 
     InputMethodManager im = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); 
     String list = im.getEnabledInputMethodList().toString(); 
     if(Stuff is true){ 
     setContentView(R.layout.activityscreen_enabled); 
     } 
    } 

} 

將使用setContentView()不太可能造成內存泄漏和其他這樣的問題?還是有更好的解決方案?

回答

0

我正在做Android,因爲幾年後,我從來沒有這樣做,因爲我喜歡堅持setContentViewonCreate模式。然而,我不相信你會遇到很大的麻煩(我的意思是內存泄漏)。

不過,我不認爲做這樣的事,在Activity格局的點(或我如何理解它)是更多:

我創建的onCreate景色,我更新其數據爲onResume,如果數據是A,則添加/刪除此視圖,如果數據爲B,則添加/刪除此其他視圖。

是完整的,我看了你的(真的很好)鏈接,我想你可能誤會了你可以如何運用什麼Commonsware是說:你可以有多重的意見,而不具有不同setContentView:您的視圖結構的需求,在此的情況下,要真正模塊化,你將能夠動態加載所有的子視圖(或者,至少,這是我和我的同事正在做的事情))。 (例如,藍色背景),然後對於我想要的每個視圖(每種情況),我都會有一個動態佈局,可以加載在生命週期的某個階段(可能在onResume)。我不相信,你在做什麼特別壞,但我懷疑,有人認爲這樣的^^

link同意我

0

如果需要多個屏幕使用Fragment甚至創造一個新的Activity的觀點亂搞因爲某些原因

  • 這不是好事,對整個應用程序單Activity也將是如此漫長而複雜的內部。
  • onResume()需要處理的新觀點和它們的ID,onClickListeners ...等
  • onResume()被稱爲不像onCreate()多次因此這將是時間和浪費內存一遍又一遍加載的意見。
  • 根據活動的生命週期大約onPause()onResume()

的Android DOC因爲這種狀態可以在這兩種方法經常轉換,代碼應該是爲了避免緩慢的轉變,使用戶相當輕量級等待。

相關問題