一捍壤、Acticity的生命周期
1槽畔、Activity生命周期方法
①onCreate():表示Activity正在被創(chuàng)建(還沒有顯示到前臺頁面)
②onRestart():表示Activity正在重新啟動(還沒有顯示到前臺頁面)
③onStart():表示Activity正在被啟動(還沒有顯示到前臺頁面)
④onResume():表示Activity已經(jīng)可見栈妆,并在前臺顯示.
⑤onPause():表示Activity正在停止。
⑥onStop():表示Activity即將停止。
⑦onDestory():表示Acttivity即將被銷毀鳞尔。
2嬉橙、Activity啟動時生命周期執(zhí)行順序
①當(dāng)Activity第一次啟動時
onCreate>onStart>onResume
②當(dāng)按Home鍵返回到桌面再回到Activity時
onPause>onStop>onRestart>onStart>onResume
二、Activity啟動模式
1寥假、standard(默認(rèn)模式)
每次啟動一個Activity時都會創(chuàng)建一個實例放入啟動它的Activity任務(wù)棧中市框,不管是否已經(jīng)存在該實例
2、singleTop(棧頂復(fù)用模式)
每次啟動一個Activity時看該Activity是否處于任務(wù)棧的棧頂糕韧,存在就復(fù)用枫振,不存在重新創(chuàng)建放入棧頂
3、singleTask(棧內(nèi)復(fù)用模式)
每次啟動一個Activity時看該Activity是否處于任務(wù)棧的棧中兔沃,存在(棧頂)就復(fù)用蒋得,不在棧頂就把該Activity上面的Activity全部踢出任務(wù)棧,不存在重新創(chuàng)建放入任務(wù)棧
4乒疏、singleInstance(單例模式)
每次啟動一個Activity時不存在任務(wù)棧中额衙,就會為它創(chuàng)建一個單獨的任務(wù)棧。并且只有這一個Activity的實例
三怕吴、Activity之間傳遞數(shù)據(jù)
1窍侧、簡單使用Intent傳遞
//MainActivity
Intent mIntent = new Intent(MainActivity.this, Main2Activity.class);
/**
* 可傳遞類型有:boolean,byte,char,short,int,long,float,double,String,CharSequence,Parcelable,Parcelable[],
*/
mIntent.putExtra("boolean", true);
startActivity(mIntent);
//Main2Activity接收數(shù)據(jù)
Intent mGetIntent = getIntent();
mGetIntent.getBooleanExtra("boolean", false);
/**
* getBooleanExtra源碼 boolean,byte,char,short,int,long,float,double基本相似
mExtras 為Bundle類型,當(dāng)我們沒有獲取相應(yīng)的字段也就是mExtras ==null時,等于我們
設(shè)置的defaultValue转绷。
*/
public boolean getBooleanExtra(String name, boolean defaultValue) {
return mExtras == null ? defaultValue :
mExtras.getBoolean(name, defaultValue);
}
/**
* getStringExtra源碼 String,CharSequence,Parcelable,Parcelable[]基本相似
mExtras 為Bundle類型,mExtras ==null時伟件,獲取到的就是null,不為null時才獲取導(dǎo)數(shù)
據(jù)议经,跟基本類型數(shù)據(jù)的獲取不同
*/
public String getStringExtra(String name) {
return mExtras == null ? null : mExtras.getString(name);
}
2斧账、使用Bundle傳遞
//MainActivity
Intent mIntent = new Intent(MainActivity.this, Main2Activity.class);
Bundle mBundle = new Bundle();
mBundle.putBoolean("Boolean", true);
mBundle.putString("String", "String");
mBundle.putInt("Int", 23);
mIntent.putExtras(mBundle);//最終會調(diào)用Bundle.putAll方法
startActivity(mIntent);
//Main2Activity接收數(shù)據(jù)
Intent mGetIntent = getIntent();
Bundle mData = mGetIntent.getExtras();
mData.getBoolean("Boolean");
mData.getString("String");
mData.getInt("Int");