1+ package com.haoge.sample.easyandroid.activities
2+
3+ import android.os.Bundle
4+ import android.os.Parcel
5+ import android.os.Parcelable
6+ import butterknife.OnClick
7+ import com.google.gson.Gson
8+ import com.haoge.easyandroid.easy.EasyBundle
9+ import com.haoge.easyandroid.easy.EasyLog
10+ import com.haoge.sample.easyandroid.BaseActivity
11+ import com.haoge.sample.easyandroid.R
12+ import java.io.Serializable
13+
14+ /* *
15+ * @author haoge on 2018/6/14
16+ */
17+ class EasyBundleActivity :BaseActivity () {
18+ override fun getLayoutId () = R .layout.activity_bundle
19+
20+ @OnClick(R .id.savePrimite)
21+ fun savePrimite () {
22+ // 基本数据类型存储测试
23+ val bundle = EasyBundle .create(null ).put(" byte" , 1 .toByte())
24+ .put(" short" , 2 .toShort())
25+ .put(" int" , 3 )
26+ .put(" long" , 4 .toLong())
27+ .put(" float" , 5 .toFloat())
28+ .put(" double" , 6 .toDouble())
29+ .put(" char" , ' c' )
30+ .put(" boolean" , true )
31+ .put(" String" , " String" )
32+ .bundle
33+ EasyLog .DEFAULT .e(" 存储基本数据类型后的bundle数据为==>$bundle \n 要求长度为9 实际为${bundle.size()} " )
34+ }
35+
36+ @OnClick(R .id.savePrimiteArray)
37+ fun savePrimiteArray () {
38+ // 基本数据类型数组存储测试
39+ val bundle = EasyBundle .create(null )
40+ .put(" IntArray" , intArrayOf(1 ,2 ,3 ))
41+ .put(" LongArray" , longArrayOf(1 ,2 ,3 ))
42+ .put(" FloatArray" , floatArrayOf(1f ,2f ,3f ))
43+ .put(" DoubleArray" , doubleArrayOf(1 .toDouble(),2 .toDouble(),3 .toDouble()))
44+ .put(" CharArray" , charArrayOf(' a' ,' b' ,' c' ))
45+ .put(" ShortArray" , shortArrayOf(1 ,2 ,3 ))
46+ .put(" BooleanArray" , booleanArrayOf(true ,false ,true ))
47+ .put(" StringArray" , arrayOf(" hello" , " world" ))
48+ .bundle
49+
50+ EasyLog .DEFAULT .e(" 存储基本数据类型数组后的bundle数据为==>$bundle \n 要求长度为8 实际为${bundle.size()} " )
51+ }
52+
53+ @OnClick(R .id.saveSerializable)
54+ fun saveSerializable () {
55+ // 其他序列化数据存储测试
56+ val bundle = EasyBundle .create(null )
57+ .put(" parcelable" , ParcelableSubclass ())
58+ .put(" serializable" , SerializableSubclass ())
59+ .put(" arrayParcelable" , arrayOf(ParcelableSubclass (), ParcelableSubclass ()))
60+ .put(" bundle" , Bundle ())
61+ .bundle
62+ EasyLog .DEFAULT .e(" 存储可序列化数据后 ==> $bundle \n 要求长度为4,实际为${bundle.size()} " )
63+ }
64+
65+ @OnClick(R .id.saveUnSerializable)
66+ fun saveUnSerializable () {
67+ val bundle = EasyBundle .create(null )
68+ .put(" info" , Info (" 存储的名字" ))
69+ .bundle
70+ EasyLog .DEFAULT .e(" 存储后的info数据为 ==> ${bundle.get(" info" )} " )
71+ }
72+
73+ @OnClick(R .id.restorePrimite)
74+ fun restorePrimite () {
75+ val easyBundle = EasyBundle .create(null )
76+ // 使用空bundle进行读取。测试读取基本数据类型时。是否正确返回默认值
77+ EasyLog .DEFAULT .e(" 读取空Byte数据:${easyBundle.get(" key" , Byte ::class .java)} " )
78+ EasyLog .DEFAULT .e(" 读取空char数据:${easyBundle.get(" key" , Char ::class .java)} " )
79+ EasyLog .DEFAULT .e(" 读取空Short数据:${easyBundle.get(" key" , Short ::class .java)} " )
80+ EasyLog .DEFAULT .e(" 读取空Int数据:${easyBundle.get(" key" , Int ::class .java)} " )
81+ EasyLog .DEFAULT .e(" 读取空Long数据:${easyBundle.get(" key" , Long ::class .java)} " )
82+ EasyLog .DEFAULT .e(" 读取空Float数据:${easyBundle.get(" key" , Float ::class .java)} " )
83+ EasyLog .DEFAULT .e(" 读取空Double数据:${easyBundle.get(" key" , Double ::class .java)} " )
84+ EasyLog .DEFAULT .e(" 读取空Boolean数据:${easyBundle.get(" key" , Boolean ::class .java)} " )
85+ }
86+
87+ @OnClick(R .id.restoreWithJSON)
88+ fun restoreWithJSON () {
89+ val json = Gson ().toJson(Info (" 不可序列化的类" ))
90+ val easyBundle = EasyBundle .create(null ).put(" jsonOfInfo" , json)// 先将json保存进去
91+ val info = easyBundle.get<Info >(" jsonOfInfo" )
92+ EasyLog .DEFAULT .e(" 从json反序列化回来后的info数据:$info " )
93+ }
94+ }
95+
96+ data class ParcelableSubclass (val name : String = " this is a subclass of Parcelable" ):Parcelable {
97+ constructor (parcel: Parcel ) : this (parcel.readString())
98+
99+ override fun writeToParcel (parcel : Parcel , flags : Int ) {
100+ parcel.writeString(name)
101+ }
102+
103+ override fun describeContents (): Int {
104+ return 0
105+ }
106+
107+ companion object CREATOR : Parcelable.Creator<ParcelableSubclass> {
108+ override fun createFromParcel (parcel : Parcel ): ParcelableSubclass {
109+ return ParcelableSubclass (parcel)
110+ }
111+
112+ override fun newArray (size : Int ): Array <ParcelableSubclass ?> {
113+ return arrayOfNulls(size)
114+ }
115+ }
116+ }
117+
118+ data class SerializableSubclass (val name : String = " this is a subclass of Serializable" ):Serializable
119+
120+ class Info (val name : String? ) {
121+ constructor (): this (" 默认名字" )// JSON反序列化时需要空构造
122+
123+ override fun toString (): String {
124+ return " Info(name=$name )"
125+ }
126+
127+ }
0 commit comments