Activity, Service之間傳遞資料使用intent來傳遞,但是android的api 文檔中都是傳遞int, long, float這種已知類型,那麼如何傳遞自訂類的對象呢?
使用 putExtra
(String
name, Serializable
value)
api.
所以自訂的類需要實現 Serializable
類。
自訂的
類中的成員類型也必須是實現Serializable的,當然基本類型除外。
例如:
public class MyClass implements Serializable {</p><p> private TreeMap<Integer, Item> data;<br /> private int count;<br /> private final int MAX_COUNT = 10;<br />}<br />public class Item implements Serializable{<br /> private String a;<br /> private String b;</p><p> public Item() {<br /> }<br />}
上面的MyClass和Item實現
Serializable。
是不是很好奇,其中用到的TreeMap還有String類,他們是實現Serializable的類嗎?
答案是 是的。下面是兩個類的聲明:
public class TreeMap<K, V> extends AbstractMap<K, V> implements SortedMap<K, V>, Cloneable, Serializable
public final class String implements Serializable, Comparable<String>, CharSequence
但,如果自訂的類本身不是真正的Serializable,那麼對於效率來講是沒有影響的。