1 普通寫Intent的方法和缺陷
普通activity a要調(diào)用起activity b頁面會這么寫:
activity a
Intent intent = new Intent(a.this, b.class);
intent.putExtra("is_index", message);
startActivity(intent);
activity b
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
String is_index = getIntent().getExtras().getString("is_index");
...
}
上面的寫法是大多數(shù)Intent寫法涨薪,在發(fā)起方創(chuàng)建intent巾遭。但這種寫法在代碼量大大增加的時候會出現(xiàn)一個問題份帐。當(dāng)activity b在各種地方都會被調(diào)用起的時候飒房,并且會傳入各種各樣不同的extra字段時兴蒸,會發(fā)現(xiàn)很混亂,哪些發(fā)起方使用了哪些extra字段沽一,每個字段什么意思秘案,哪些是必須的等等問題。最終造成b代碼可讀性變差莫鸭,讓以后想要調(diào)用起b的頁面也不清楚需要傳入哪些extra闹丐。
so,根據(jù)以上問題被因,無意間看到了google官方example代碼里一個使用intent的小技巧卿拴。
2 優(yōu)化寫Intent
同樣是activity a要調(diào)用起activity b頁面的例子:
Intent intent = b.newIndexIntent(this, text);startActivity(intent);
activity b
privatefinalstaticString IS_INDEX ="is_index";@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);? ? ...? ? String is_index = getIntent().getExtras().getString(IS_INDEX);? ? ...}.../**
* 創(chuàng)建intent
* is_index 是否是首頁跳轉(zhuǎn)過來的
*/publicstaticIntentnewIndexIntent(Context context, String message){? ? ? ? Intent newIntent =newIntent(context, b.class);? ? ? ? newIntent.putExtra(IS_INDEX, message);returnnewIntent;? ? }
用上面的方法可以保證所有extra全部定義在被調(diào)用起activity的內(nèi)部,對外不可見梨与,并可以對每個extra有詳細(xì)的注釋(是否必須巍棱、在什么地方調(diào)用)