書(shū)簽:要有足夠的動(dòng)力
由于4號(hào)發(fā)布的一篇文得到讀者反饋不是讀書(shū)筆記酌媒,我也發(fā)現(xiàn)自己重新看回筆記時(shí)必須很仔細(xì)地看欠痴,甚至也很難回憶起書(shū)中知識(shí)點(diǎn),所以我重新調(diào)整秒咨,寫(xiě)出V2版本喇辽,希望大家喜歡。
1.創(chuàng)建Activity雨席,所有四大組件的使用菩咨,都需要在AndroidManifest.xml文件中注冊(cè)。
2.用完記得銷(xiāo)毀activity陡厘,finish();
3.采用Intent切換activity抽米,隱式Intent并不能實(shí)現(xiàn)直接跳轉(zhuǎn),需要指定兩個(gè)條件(intent-filter):action和category糙置。
> 使用隱式intent云茸,不但可以打開(kāi)自己編寫(xiě)的activity,還可以打開(kāi)系統(tǒng)編寫(xiě)的activity罢低,比如瀏覽器查辩,打電話(huà)等。
4.向下一個(gè)activity傳遞數(shù)據(jù)网持,使用putExtra()將數(shù)據(jù)傳入intent宜岛,使用getIntent()獲得傳遞來(lái)的intent,然后使用getStringExtra()獲得傳遞來(lái)的數(shù)據(jù)功舀。
>返回?cái)?shù)據(jù)給上一個(gè)activity萍倡,采用startActivityForResult(intent, 1)。在下一個(gè)activity中辟汰,建立新的intent列敲,然后將data利用intent.putExtra()放入intent,setResult(RESULT_OK, intent)放置result帖汞,其中RESULT_OK為resultcode戴而,用于在上一個(gè)activity中分辨是哪一個(gè)activity返回的數(shù)據(jù)。最后翩蘸,finish()所意。之后,在上一個(gè)activity中,重寫(xiě)onActivityResult()方法扶踊。
同樣的泄鹏,如果在第二個(gè)activity中,是按返回鍵返回的秧耗,可以在第二個(gè)activity中备籽,重寫(xiě)onBackPressed()方法返回?cái)?shù)據(jù),方法同上分井。
5.activity被回收數(shù)據(jù)保存,onSaveInstanceState()方法车猬,其攜帶一個(gè)bundle類(lèi)型參數(shù),bundle可以保存各種信息杂抽。
>恢復(fù)數(shù)據(jù)诈唬,則在onCreate()方法中韩脏,傳入的參數(shù)為Bundle savedInstanceState缩麸,利用這恢復(fù)數(shù)據(jù)。
String data=savedInstanceState.getString(“saved”);
6.activity的四種啟動(dòng)模式赡矢,可以在標(biāo)簽中android:launchMode定義杭朱。
standard:打開(kāi)activity,就放入棧頂
singleTop:打開(kāi)activity吹散,檢查棧頂是否已經(jīng)存在該activity弧械,存在了就不創(chuàng)建。不存在才創(chuàng)建空民。不過(guò)刃唐,如果該activity不在棧頂,但也存在界轩,則也會(huì)重新創(chuàng)建一個(gè)画饥。
singleTask:檢查整個(gè)返回棧,如果存在某個(gè)activity浊猾,則不會(huì)重新創(chuàng)建抖甘。
singleInstance:創(chuàng)建一個(gè)activity,重新在一個(gè)新的返回棧(或Task)中創(chuàng)建葫慎,該activity與其他activity不在同一個(gè)Task中衔彻,其他程序也可以調(diào)用這個(gè)activity的實(shí)例。
7.知道當(dāng)前頁(yè)面是哪一個(gè)activity:新建一個(gè)BaseActivity extents Activity偷办,其中在onCreate()中打印該activity的信息
Log.i(“BaseActivity”,getClass().getSimpleName()); ??//獲得類(lèi)名
然后艰额,所有activity都extents BaseActivity即可
8.隨時(shí)隨地退出程序:首先,新建一個(gè)activity管理類(lèi)椒涯,實(shí)現(xiàn)所有的activity的添加柄沮、刪除和finish()。
然后,修改BaseActivity铡溪,在onCreate()中添加this漂辐,onDestory()中移除this
ActivityCollector.addActivity(this);
ActivityCollector.removeActivity(this);
9.給每個(gè)activity都添加一個(gè)合適的啟動(dòng)方法
在SecondActivity中添加了startActivity()方法之后,在任意的activity中啟動(dòng)SecondActivity棕硫,都可以調(diào)用該方法髓涯,而且知道需要傳入哪些參數(shù)。
比如在MainActivity中啟動(dòng)方法為:
SecondActivity.startActivity(MainActivity.this, “data1”, “data2”);
?