簡體   English   中英

這是內存泄漏嗎?

[英]Is this a memory leak?

我有一個ListActivity,其中包含一個已定義的對象,稱為MessageItem。 我想將此MessageItem中的數據傳遞給Service來做一些事情,但我不希望Activity綁定到Service上的數據,這樣Android就無法在需要的情況下收回Activity(錯誤內存泄漏) )。

我正在做的是將MessageItem對象與應用程序上下文一起傳遞給單例類中的方法。 單例方法使用應用程序上下文來啟動我的服務。 我向本服務傳遞了意圖。 在此Intent中,我將MessageItem對象中的項目放置如下:

    intent.putExtra("subject", msg.getSubject());
    intent.putExtra("summary", msg.getSummary());
    intent.putExtra("created_on", msg.getCreatedDate());
    intent.putExtra("read", msg.getIsRead());

這些數據是否會將我的活動綁定到意圖傳遞給的服務並導致內存泄漏?

這樣會更好嗎?

    intent.putExtra("subject", new String(msg.getSubject()));
    intent.putExtra("summary", new String(msg.getSummary()));
    intent.putExtra("created_on", new Integer(msg.getCreatedDate()));
    intent.putExtra("read", new Boolean(msg.getIsRead()));

您不需要新的String或Integer。 通過意圖傳輸數據時,將對數據進行打包和取消打包。

該數據會將我的活動綁定到服務嗎

不,上面的代碼將在活動中引用該意圖。 字符串和布爾值沒有指向實例的指針。

這樣會更好嗎?

沒有! 那會更糟。 很多數據將被復制,很多對象將被創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM