Android的Activity简单代理模式

作者: 废柴傻狗 | 来源:发表于2016-05-09 19:24 被阅读594次

    当接入的Sdk里有大量的activity时,为了启动这些activity,你必须挨个在Manifest里进行注册,既麻烦,又耦合。为了简化配置文件,用这种简单代理模式即可实现。
    这种代理模式的思想是注册一个唯一的Activity,其他的Activity以这个为基础,开启关闭暂停恢复等生命周期和各种方法都是用这个基本的代理Activity,我们称之为ProxyActivity,而其他使用这个代理Activity的就可以自己创建了,但是要注意的是,这些Activity是借用了这个代理Activity的生命周期,方法等,所以直接使用像setContentView()方法是行不通的,要用ProxyActivity的上下文才能使用,步骤如下:
    1.在主工程的Manifest里注册这个ProxyActivity
    <activity android:name="com.jackryannn.mylibrary.ProxyActivity"/>
    2.在Sdk里创建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里创建继承代理Activity的Activity,注意它并不是真正的Activity,而是使用了代理Activity的躯壳,为了区分,我在这个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());
    就这么简单。

    相关文章

      网友评论

        本文标题:Android的Activity简单代理模式

        本文链接:https://www.haomeiwen.com/subject/rhperttx.html