Android的Activity简单代理模式

当接入的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());
就这么简单。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容