在使用Handler过程中出现了This Handler class should be static or leaks might occur 的警告提示,有内存泄漏的风险。
参考网上的资料,规避方案如下:
private MyHandler mHandler = new MyHandler(this);
private static class MyHandler extends Handler {
WeakReference<Activity2> mActivity;
MyHandler(Activity2 activity) {
mActivity = new WeakReference<Activity2>(activity);
}
@Override
public void handleMessage(Message msg) {
Activity2 theActivity = mActivity.get();
switch (msg.what) {
case 1:
String text = (String)msg.obj;
theActivity.updateText(text);
break;
default:
theActivity.updateText("hello");
}
}
}
private void updateText(String text) {
if(text != null && !TextUtils.isEmpty(text)) {
view.setText(text);
} else {
view.setText("no respose!!");
}
}
private void doSomething() {
new Thread() {
@Override
public void run() {
Message msg = new Message();
msg.what = 1;
msg.obj = str;
mHandler.sendMessage(msg);
}
}.start();
}