當(dāng)一個(gè)activity被回收之后其掂,又返回這個(gè)activity時(shí)油挥,會(huì)重新調(diào)用onCreate方法,此時(shí)款熬,保存在activity的數(shù)據(jù)都會(huì)消失深寥。我們重寫(xiě)onSaveInstanceState方法就可以保存臨時(shí)數(shù)據(jù)了。
@Override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
String tempData = "Something you just typed";
outState.putString("data_key", tempData);
}
//我們可以在onCreate方法中取得保存的全部數(shù)據(jù)
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState != null) {
String tempData = savedInstanceState.getString("data_key");
}
}
Activity的啟動(dòng)模式
//Activity有四種啟動(dòng)模式standard贤牛、singleTop惋鹅、singleTask、singleInstance殉簸。
//可以在A(yíng)ndroidManifest.xml中給<activity>標(biāo)簽指定android:launchMode屬性來(lái)選擇啟動(dòng)模式
小知識(shí)
getTaskId() 可以返回當(dāng)前棧的id
getClass().getSimpleName(); //獲取當(dāng)前實(shí)例的類(lèi)名
管理所有的Activity
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities) {
if(!activity.isFinishing()) {
activity.finish();
}
}
}
}
#通過(guò)繼承闰集,我們可以改寫(xiě)方法,使我們新建的類(lèi)能管理
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
#我們經(jīng)常要啟動(dòng)一個(gè)Activity般卑,但是也許是別人寫(xiě)的武鲁,我們不知道要傳什么參數(shù),
#寫(xiě)一個(gè)函數(shù)actionStart看參數(shù)列表就知道傳什么樣的參數(shù)了
public static SecondActivity extends BaseActivity {
public static void actionStart(Context context, String data1,String data2) {
Intent intent = new Intent(context, Second.class);
intent.putExtra("param1", data1);
intent.putExtra("param2", data2);
context.startActivity(intent);
}
}
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");