如何優(yōu)雅的使用Intent(轉(zhuǎn))

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)一個問題。當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有詳細的注釋(是否必須、在什么地方調(diào)用)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容