曾经被问到这样一个问题:Bundle能存哪些数据类型,不能存哪些数据类型?
当时那个汗啊,因为,平常使用Bundle,要么使用基本数据类型,要么序列化自定义的Class,那到底能存哪些类型,不能存哪些呢?
今天查阅了下google官方的文档(http://developer.android.com/reference/android/os/Bundle.html),罗列了以下这些是可以的:
void putAll(Bundle map) void putBinder(String key, IBinder value) void putBoolean(String key, boolean value) void putBooleanArray(String key, boolean[] value) void putBundle(String key, Bundle value) void putByte(String key, byte value) void putByteArray(String key, byte[] value) void putChar(String key, char value) void putCharArray(String key, char[] value) void putCharSequence(String key, CharSequence value) void putCharSequenceArray(String key, CharSequence[] value) void putCharSequenceArrayList(String key, ArrayList<CharSequence> value) void putDouble(String key, double value) void putDoubleArray(String key, double[] value) void putFloat(String key, float value) void putFloatArray(String key, float[] value) void putInt(String key, int value) void putIntArray(String key, int[] value) void putIntegerArrayList(String key, ArrayList<Integer> value) void putLong(String key, long value) void putLongArray(String key, long[] value) void putParcelable(String key, Parcelable value) void putParcelableArray(String key, Parcelable[] value) void putParcelableArrayList(String key, ArrayList<? extends Parcelable> value) void putSerializable(String key, Serializable value) void putShort(String key, short value) void putShortArray(String key, short[] value) void putSparseParcelableArray(String key, SparseArray<? extends Parcelable> value) void putString(String key, String value) void putStringArray(String key, String[] value) void putStringArrayList(String key, ArrayList<String> value)
一目了然:MAP,基本数据类型,基本数据类型数组,Parcelable类型及Parcelable类型数组,Serializable类型(无Serializable类型数组!),ArrayList
从以上发现,数据存储在连续的内存地址上的可以使用,其它存储方式不行(如链表存储就不行)。
如果有说错的地方,希望大家纠正,谢谢!