<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          AyoActivityNoManifestActivity 代理框架

          聯(lián)合創(chuàng)作 · 2023-09-25 02:57

          1 這是什么?

          • 這個(gè)庫(kù)提供了:

            • 一個(gè)輕量級(jí)的Activity代理框架(ActivityAttacher,使用方式基本和Activity一樣),目的在于不必在Manifest反復(fù)聲明Activity

            • 同時(shí)提供了一個(gè)輕量級(jí)的Bundle機(jī)制(SimpleBundle,使用方式基本和Bundle一樣),目的在于在Activity之間傳遞參數(shù)時(shí)考慮序列化問(wèn)題,適用于進(jìn)程內(nèi)通信

            • 提供了一個(gè)輕量級(jí)的OnActivityResult機(jī)制(OnResultCallback,使用方式基本和OnActivity不一樣)

            • 狀態(tài)欄一體化的簡(jiǎn)單封裝

            • Activity和Fragment狀態(tài)保存的問(wèn)題

            • 其他Activity和Fragment問(wèn)題的解決方案,后期一個(gè)一個(gè)加

          2 ActivityAttacher的使用

                  (1) manifest

          • manifest里只需要聲明:

            • 主Activity

            • 有特殊需求的Activity,如支持旋轉(zhuǎn)

            • 模板Activity,暫時(shí)只支持一個(gè)啟動(dòng)模式對(duì)應(yīng)一個(gè)模板Activity

            • 模板Activity有幾個(gè)默認(rèn)配置項(xiàng),如果需要更改,也需要聲明自己的Activity

          Manifest中的聲明:

          <activity
                      android:name="com.cowthan.sample.MainActivity"
                      android:configChanges="orientation|screenSize|keyboardHidden|navigation"
                      android:screenOrientation="portrait"
                      android:theme="@style/AppTheme"
                      >
                      <intent-filter>
                          <action android:name="android.intent.action.MAIN" />
          
                          <category android:name="android.intent.category.LAUNCHER" />
                      </intent-filter>
                  </activity>
          
                  <activity
                      android:name="org.ayo.app.base.TmplActivityStandard"
                      android:configChanges="orientation|screenSize|keyboardHidden|navigation"
                      android:screenOrientation="portrait"
                      android:launchMode="standard"
                      android:theme="@style/AyoTransparentTheme" />
          
                  <activity
                      android:name="org.ayo.app.base.TmplActivitySingleTask"
                      android:configChanges="orientation|screenSize|keyboardHidden|navigation"
                      android:screenOrientation="portrait"
                      android:launchMode="singleTask"
                      android:theme="@style/AyoTransparentTheme" />
          
                  <activity
                      android:name="org.ayo.app.base.TmplActivitySingleTop"
                      android:configChanges="orientation|screenSize|keyboardHidden|navigation"
                      android:screenOrientation="portrait"
                      android:launchMode="singleTop"
                      android:theme="@style/AyoTransparentTheme" />
          
                  <activity
                      android:name="org.ayo.app.base.TmplActivitySingleInstance"
                      android:configChanges="orientation|screenSize|keyboardHidden|navigation"
                      android:screenOrientation="portrait"
                      android:launchMode="singleInstance"
                      android:theme="@style/AyoTransparentTheme" />

              (2) ActivityAttacher

          • ActivityAttacher的意義:

            • ActivityAttacher就是附著在上面4個(gè)模板Activity里的Activity代理

            • ActivityAttacher中持有一個(gè)Activity實(shí)例對(duì)象,是在onCreate時(shí)賦值的

            • ActivityAttacher可以處理Activity中的所有配置和生命周期

            • ActivityAttacher提供的接口,原則上應(yīng)該完全仿Activity,這一點(diǎn)類似v7源碼中的和AppCompactActivity相關(guān)的一個(gè)delegate類,但不知道這個(gè)類是干什么用的

          (3) 定義Activity

          看代碼,這兩個(gè)只有基類不一樣,內(nèi)部代碼應(yīng)該是一樣的,其中繼承AyoActivity的是一個(gè)普通Activity,需要去manifest聲明, 而繼承AyoActivityAttacher,就不需要再去manifest聲明了

          public class SampleActivity extends AyoActivityAttacher{
          
              public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){
                  SimpleBundle sb = new SimpleBundle();
                  sb.putExtra("takeSystemBar", takeSystemBar);
                  ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack);
              }
          
              @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.ac_tmpl);
              }
          }
          
          public class SampleActivity extends AyoActivity{
          
              @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.ac_tmpl);
              }
          }

              (4) 啟動(dòng)ActivityAttacher

          啟動(dòng)方式變成這樣:

          public static void start(Context c, boolean takeSystemBar, int lanuchMode, OnResultCallBack callBack){
              SimpleBundle sb = new SimpleBundle();
              sb.putExtra("takeSystemBar", takeSystemBar);
              ActivityAttacher.startActivity(c, SampleActivity.class, sb, false, lanuchMode, callBack);
          }
          • SimpleBundle:功能類似于intent或者bundle,存的是傳到下一個(gè)Activity的參數(shù)

            • 取出參數(shù):boolean takeSystemBar = getIntent().getBooleanExtra("takeSystemBar");

            • 這里,在Activity之間傳的都是引用,不再需要考慮序列化問(wèn)題,當(dāng)然只適用于app單進(jìn)程內(nèi)

          • OnResultCallBack是接收Activity的回傳結(jié)果

            • 如何回傳:getResultCallback().onResult("代替OnActivityReslt和setResult"); finish();

          • lanuchMode是選擇Activity的啟動(dòng)模式,也就是選擇模板:

            • ActivityAttacher.LAUNCH_MODE_STANDARD

            • ActivityAttacher.LAUNCH_MODE_SINGLE_TASK

            • ActivityAttacher.LAUNCH_MODE_SINGLE_TOP

            • ActivityAttacher.LAUNCH_MODE_SINGLE_INSTANCE

              (5) Activity主題

          這里提供了兩個(gè)主題:AyoTransparentTheme和AyoTheme,沒(méi)啥特殊的

          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产免费小视频 | 国产毛片久久久久久久 | 人成网站在线观看 | 青青操在线 | 五月婷婷婷婷婷婷 |