博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 代理模式创建Activity
阅读量:4313 次
发布时间:2019-06-06

本文共 2818 字,大约阅读时间需要 9 分钟。

代码实现采用构造方法传递参数传递Activity实例的方式

 

public class ActivityHandler {    protected Activity mActivityInstance;    public ActivityHandler(Activity activity) {        mActivityInstance = activity;    }    // this one is called before super.onCreate    public void onPreCreate(Bundle savedInstance) {    }    public void onCreate(Bundle savedInstance) {        ……实现一些公共的创建逻辑    }    public void onRestoreInstanceState(Bundle savedInstance) {    }    public View onCreateView(String name, Context context, AttributeSet attrs) {        return null;    }    public void onNewIntent() {    }    public void onStart() {    }     public void onResume() {    }    public void onPostResume() {    }    public void onPause() {    }    public void onSaveInstanceState(Bundle outState) {    }    public void onStop() {    }    public void onDestroy() {    }    public void finish() {    }    public void onActivityResult(int requestCode, int resultCode, Intent data) {    }     public boolean onBackPressed() {        return false;    }    public void onConfigurationChanged(Configuration newConfig) {    }    protected boolean isActivityFinished() {        return mActivityInstance.isFinishing();    }    protected void onFragmentCallback(int action, Bundle data) {    }     protected void setActionBar(final String title) {        ……    }     protected void setBackIconVisibility(int visibility) {        ……封装一些统一的Activity的方法    }    public boolean onCreateOptionsMenu() {        return false;    }    public boolean onOptionsHomeItemSelected() {        return false;    }     public View getSupportActionBar() {        ……    }     protected boolean inflateMenu(int menuLayoutId) {        ……实现公共的菜单    }    public void dispatchTouchEvent(MotionEvent ev) {    }    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {    }}

 

public abstract class BaseActivity extends ActivityHandler:

抽象类再封装一次,提供一些具体业务操作的公共方法,和回调的抽象方法

 

 

public class Test1Activity extends BaseActivity:

具体的Activity实现逻辑,重载ActivityHandler的方法,主要的代码逻辑是加载layout文件,处理layout的交互等

 

 

public class ProxyActivity  extends Activity :

真正的Activity作为一个代理,所有的Activity创建都通过该代理类来进行创建。

 

 

    static final Intent getLaunchIntent(Context ctx, String action, Bundle extras) {

        return ProxyActivity.getLaunchIntent(ctx, action, extras, ForumSDKActivity.class);

    }

 

    static final Intent getLaunchIntent(Context ctx, String action, Bundle extras,

            Class<? extends ProxyActivity  > extend) {

        Intent intent = new Intent(ctx, extend == null ? ProxyActivity.class : extend);

        intent.setAction(action);

        if (extras != null) {

            intent.putExtras(extras);

        }

        return intent;

    }

        Intent intent = ProxyActivity  .getLaunchIntent(mContext, ProxyActivity  .ACTIONS.XXXXXX, null);

        mContext.startActivity(intent);

 

好处就是封装和抽象 代码共享,Activity的统一入口

 

转载于:https://www.cnblogs.com/xbx2015/p/5340736.html

你可能感兴趣的文章
第17章:MongoDB-聚合操作--聚合管道--$group
查看>>
Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决
查看>>
angularjs基础——控制器
查看>>
前端设计师如何提高UI界面中的阅读性
查看>>
APP版本号记录
查看>>
母函数
查看>>
最长不重复子串
查看>>
POJ 3621
查看>>
PHP ajax实现数组返回
查看>>
java web 自定义filter
查看>>
J.U.C Atomic(二)基本类型原子操作
查看>>
POJ---2945 Find the Clones[字典树-简单题(多例输入注意删除)]
查看>>
[Luogu4550] 收集邮票
查看>>
Python-循环
查看>>
(转)最大子序列和问题 看着貌似不错
查看>>
thinkphp3.2 链接数据库测试
查看>>
项目的上线流程是怎样的?
查看>>
Linux通配符
查看>>
ES6 Iterator
查看>>
Apache2.4开启GZIP功能
查看>>