Android的Activity簡單代理模式

當接入的Sdk里有大量的activity時,為了啟動這些activity,你必須挨個在Manifest里進行注冊,既麻煩,又耦合。為了簡化配置文件,用這種簡單代理模式即可實現(xiàn)。
這種代理模式的思想是注冊一個唯一的Activity,其他的Activity以這個為基礎,開啟關閉暫?;謴偷壬芷诤透鞣N方法都是用這個基本的代理Activity,我們稱之為ProxyActivity,而其他使用這個代理Activity的就可以自己創(chuàng)建了,但是要注意的是,這些Activity是借用了這個代理Activity的生命周期,方法等,所以直接使用像setContentView()方法是行不通的,要用ProxyActivity的上下文才能使用,步驟如下:
1.在主工程的Manifest里注冊這個ProxyActivity
<activity android:name="com.jackryannn.mylibrary.ProxyActivity"/>
2.在Sdk里創(chuàng)建ProxyActivity,為了已最少的代碼來展示,只寫了兩個方法,一個是getActivity(),用來獲取這個ProxyActivity的上下文,因為很多方法比如新建一個TextView都需要當前ProxyActivity的上下文。另一個方法是start(),用來啟動一個繼承ProxyActivity的Activity,代碼如下:

  public static void start(Context context , ProxyActivity activity){
      Intent intent = new Intent(context,activity.getClass());
      context.startActivity(intent);
  }
  public Activity getActivity(){
      return this;
  }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  }
}

3.在Sdk里創(chuàng)建繼承代理Activity的Activity,注意它并不是真正的Activity,而是使用了代理Activity的軀殼,為了區(qū)分,我在這個Activity里添加了一個TextView。
public class JackActivity extends ProxyActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.getActivity().setContentView(R.layout.activity_jack); } }
4.最后就是在主工程里啟動這個JackActivity了。
ProxyActivity.start(MainActivity.this, new JackActivity());
就這么簡單。

最后編輯于
?著作權(quán)歸作者所有,轉(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)容