2010-09-01 149 views
1

我有一個ListActivity包含我定義的一個對象,稱爲MessageItem。我想將這個MessageItem中的數據傳遞給一個服務來做一些事情,但我不希望這個Activity被數據綁定到這個服務上,這樣如果需要的話,Android不能回收這個Activity(ergo內存泄漏)。這是內存泄漏嗎?

我正在做的是將MessageItem對象與應用程序上下文一起傳遞給單例類中的方法。單例方法使用應用程序上下文來啓動我的服務。我傳遞給本服務意向。在這個意圖,我把物品從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())); 

回答

4

你不需要新的字符串或整數。當數據被意圖傳輸時,它將被打包並且不被打包。

+0

嗯,是的,好不好 – Andrew 2010-09-01 15:12:30

+0

是不是把它叫做盒裝? – Powerlord 2010-09-01 15:20:16

2

將這個數據我的活動綁定服務

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

這是更好的實施嗎?

不!那會更糟。許多數據將被複制,並且很多對象將被創建爲零。

+0

感謝您的澄清 – Andrew 2010-09-01 15:11:38