Android架構系列-如何優美的寫Intent

本文介紹了一種優美寫Intent的方式,能夠在項目開發中遵循這種開發規則java

0 Android架構系列文章

該系列文章會不斷更新Android項目開發中一些好的架構和小技巧android

系列一 Android架構系列-基於MVP建立適合本身的架構
系列二 Android架構系列-如何優美的寫Intent
系列三 Android架構系列-開發規範
系列四 Android架構系列-封裝本身的okhttp
系列五 Android架構系列-MVP架構的實際應用架構

1 普通寫Intent的方法和缺陷

普通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的小技巧。優化

2 優化寫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

結尾

好的項目架構每每是清晰的大框架加上某些優美的小細節,後續繼續整理,未完待續...

更多文章關注個人公衆號

個人公衆號
個人公衆號
相關文章
相關標籤/搜索