2013-08-21 52 views
1
@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)) { 
     Intent newIntent = new Intent(context, SpeedDialerActivity.class); 
     intent = new Intent(context, SpeedDialerActivity.class); 
     context.startActivity(newIntent||intent(received from argument)); // which object is better here. 
    } 
} 

使用onReceive方法的參數中收到的意圖還是更好,還是創建和使用Intent類型的新對象類。如果我使用onReceive方法中收到的作爲參數的Intent對象,行爲會變得模糊不清。哪種意圖對象會是更好的選擇以節省內存

回答

1

Java(以及任何語言)的良好編程的基本規則是不能將變量用於不同目的。防止問題最安全的方法是將輸入參數聲明爲final。這樣你甚至不能做這樣的價值改變。像這樣做:

public void onReceive(final Context context, final Intent intent) { 

任何方式,具有第二變量不會造成任何顯著記憶改變,如果有的話,但你的代碼會更加安全。如果輸入intent對象按原樣重用,則可以保存一些內存,但也不要這樣做!只有在發現問題時才應考慮這些內存優化。即使在這種情況下,通常還有其他方法來解決問題。

它在很大程度上取決於您的應用程序什麼是內存密集度最高,但在實踐中資源,如圖像佔用大部分內存。您應該使用已有的緩存機制。只需進行谷歌搜索,即可獲得數以萬計的文章和Google IO視頻。一些例子:

+0

allprog - 任何建議或帖子,我可以在線閱讀在android-java的內存優化。請給我很大的幫助...在此先感謝 – LokiDroid

+1

更新了幾個例子的答案 – allprog