Android 基类Base的封装

洪凯定
2023-12-01

Android内部线程集中管理,不能直接new Handler new WebView?

--  Base基类等封装- https://github.com/jenly1314/Base/tree/master/src/main/java/com/king/base

Android 自定义Activity基类- http://blog.csdn.net/u013045971/article/details/47418093

Fragment懒加载实现,BaseFragment封装- https://www.jianshu.com/p/4eb74c9d5766

把更多的公用性的东西写成可配置化的?

> Android BaseActivity封装

1.BaseParentActivity抽象类封装

public abstract class BaseParentActivity extends RxAppCompatActivity implements BaseViewInterface {

    protected LayoutInflater mInflater;
    protected Context mContext;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AppManager.getAppManager().addActivity(this);
        if (getLayoutId() != 0) {
            setContentView(getLayoutId());
        }
        mInflater = getLayoutInflater();
        mContext = this;
        initTitleBar();
        initView();
        initData();
    }

    /**
     * 打开一个Activity 默认 不关闭当前activity
     * @param clz
     */
    public void gotoActivity(Class<?> clz) {
        gotoActivity(clz, false, null);
    }

    public void gotoActivity(Class<?> clz,boolean isCloseCurrentActivity) {
        gotoActivity(clz, isCloseCurrentActivity, null);
    }

    public  void gotoActivity(Class<?> clz,boolean isCloseCurrentActivity,Bundle ex) {
        Intent intent=new Intent(this, clz);
        if(ex!=null)
            intent.putExtras(ex);
        startActivity(intent);
        if (isCloseCurrentActivity) {
            finish();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    protected int getLayoutId() {
        return 0;
    }

    protected void initTitleBar() {
    }
}
 2. BaseActivity抽象类进一步封装
public abstract class BaseActivity extends BaseParentActivity implements View.OnClickListener{
    @BindView(R.id.title_text)
    protected TextView mTitleText;
    @BindView(R.id.back_img)
    protected ImageView mBackBtn;
    @BindView(R.id.right_img)
    protected ImageView mRightBtn;

    @Override
    protected void initTitleBar() {
        ButterKnife.bind(this);

    }

    @Override
    @OnClick({R.id.back_img})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.back_img:
                onBackPressed();
                break;
            default:
                break;
        }
    }
}
3. CommentActivity实现
public class CommentActivity extends BaseActivity {

    @Override
    protected int getLayoutId() {
        return R.layout.activity_comment;
    }

    @Override
    public void initView() {
        mTitleText.setText(R.string.comment);
    }

    @Override
    public void initData() {

    }
}

-- WebView单例封装 Android ?
-- 全局Handler的封装- https://blog.csdn.net/Crazyencode/article/details/79997907
public class GlobalHandler extends Handler{  
    private HandleMsgListener listener;  
    private String Tag = GlobalHandler.class.getSimpleName();  
  
    //使用单例模式创建GlobalHandler  
    private GlobalHandler(){  
        Log.e(Tag,"GlobalHandler创建");  
    }  
  
    private static class Holder{  
        private static final GlobalHandler HANDLER = new GlobalHandler();  
    }  
  
    public static GlobalHandler getInstance(){  
        return Holder.HANDLER;  
    }  
  
    @Override  
    public void handleMessage(Message msg) {  
        super.handleMessage(msg);  
        if (getHandleMsgListener() != null){  
            getHandleMsgListener().handleMsg(msg);  
        }else {  
            Log.e(Tag,"请传入HandleMsgListener对象");  
        }  
    }  
  
    public interface HandleMsgListener{  
        void handleMsg(Message msg);  
    }  
  
    public void setHandleMsgListener(HandleMsgListener listener){  
        this.listener = listener;  
    }  
  
    public HandleMsgListener getHandleMsgListener(){  
        return listener;  
    }  
  
}  

public class MainActivity extends AppCompatActivity implements GlobalHandler.HandleMsgListener{
    private GlobalHandler mHandler;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mHandler = GlobalHandler.getInstance();
        mHandler.setHandleMsgListener(this);
        mHandler.sendEmptyMessage(0);
        mHandler.sendEmptyMessage(1);
    }
    @Override
    public void handleMsg(Message msg) {
        switch (msg.what){
            case 0:
                Toast.makeText(MainActivity.this,"test0",Toast.LENGTH_SHORT).show();
                break;
            case 1:
                Toast.makeText(MainActivity.this,"test1",Toast.LENGTH_SHORT).show();
                break;
        }
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //销毁移除所有消息,避免内存泄露
        mHandler.removeCallbacks(null);
    }
}

 类似资料: