本文介紹了一種優美寫Intent的方式,能夠在項目開發中遵循這種開發規則java
該系列文章會不斷更新Android項目開發中一些好的架構和小技巧android
系列一 Android架構系列-基於MVP建立適合本身的架構
系列二 Android架構系列-如何優美的寫Intent
系列三 Android架構系列-開發規範
系列四 Android架構系列-封裝本身的okhttp
系列五 Android架構系列-MVP架構的實際應用架構
普通activity a要調用起activity b頁面會這麼寫:
activity a框架
Intent intent = new Intent(a.this, b.class);
intent.putExtra("is_index", message);
startActivity(intent);複製代碼
activity bide
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
String is_index = getIntent().getExtras().getString("is_index");
...
}複製代碼
上面的寫法是大多數Intent寫法,在發起方建立intent。但這種寫法在代碼量大大增長的時候會出現一個問題。當activity b在各類地方都會被調用起的時候,而且會傳入各類各樣不一樣的extra字段時,會發現很混亂,哪些發起方使用了哪些extra字段,每一個字段什麼意思,哪些是必須的等等問題。最終形成b代碼可讀性變差,讓之後想要調用起b的頁面也不清楚須要傳入哪些extra。post
so,根據以上問題,無心間看到了google官方example代碼裏一個使用intent的小技巧。優化
一樣是activity a要調用起activity b頁面的例子:this
Intent intent = b.newIndexIntent(this, text);
startActivity(intent);複製代碼
activity bgoogle
private final static String IS_INDEX = "is_index";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
String is_index = getIntent().getExtras().getString(IS_INDEX);
...
}
...
/** * 建立intent * is_index 是不是首頁跳轉過來的 */
public static Intent newIndexIntent(Context context, String message) {
Intent newIntent = new Intent(context, b.class);
newIntent.putExtra(IS_INDEX, message);
return newIntent;
}複製代碼
用上面的方法能夠保證全部extra所有定義在被調用起activity的內部,對外不可見,並能夠對每一個extra有詳細的註釋(是否必須、在什麼地方調用)spa
好的項目架構每每是清晰的大框架加上某些優美的小細節,後續繼續整理,未完待續...
更多文章關注個人公衆號