跳到正文
Pollex's blog
返回

BaseActivity封装技巧

目录

在项目的开发中,一般都是要封装一个 BaseActivity 来做一些常用的动作的,下面就是我在项目中用到的一些简单封装。

1. 统计

在 BaseActivity 的生命周期中调用统计部分的代码,这样可以省去在不同的界面重复编写统计代码的工作。

@Override
public void onResume() {
    super.onResume();
    AnalyticsHelper.getInstance().onResume(this);
}

@Override
protected void onPause() {
    super.onPause();
    AnalyticsHelper.getInstance().onPause(this);
}

2. ProgressDialog

配置一个通用的 ProgressDialog 是非常有用的,这样在接口请求的时候,直接调用显示,数据返回后调用消失,超级爽!!!

// 显示ProgressDialog
public ProgressDialog progressDialog;

public void showProgressDialog() {
    if (progressDialog == null) {
        progressDialog = new ProgressDialog(this);
        progressDialog.show();
    } else {
        if (!progressDialog.isShowing()) {
            progressDialog.show();
        }
    }
}

// 隐藏ProgressDialog
public void cancelProgressDialog() {
    if (progressDialog != null && progressDialog.isShowing()) {
        progressDialog.dismiss();
    }
}

注意: 要在onDestroy()中调用一下 cancelProgressDialog(),防止Activity has leaked window错误。

3. 全局 handler

如果习惯用 Thread+Handler 来异步操作数据并刷新界面的话,每个界面都定义一遍 Handler 对象是非常烦人的,所以可以在 BaseActivity 中定义一个 Handler 对象,快捷又方便。

public Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        handleMsg(msg);
    }
};

/**
 * 复写来处理mHandler发来的消息
 * @param msg
 */
public void handleMsg(Message msg) {}

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

注意: 要在onDestroy()中调用 mHandler.removeCallbacksAndMessages()方法,否则会出现 handler 内存泄露问题。


分享这篇文章:

上一篇
WebView的优化总结
下一篇
奇葩问题的记录