我希望通过消息传递实现Activity
和IntentService
之间的双向通信。
在this Google sample project中,Handler
类在Activity
中实现为内部类:
class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MessengerService.MSG_SET_VALUE:
mCallbackText.setText("Received from service: " + msg.arg1);
break;
default:
super.handleMessage(msg);
}
}
}
以相同方式实施我的Handler
会产生以下警告:
此Handler类应该是静态的或可能发生泄漏
所以在查看this answer之后,我已经将我的实现为静态嵌套类,如下所示:
private static class IncomingHandler extends Handler {
private final WeakReference<MainActivity> mainActivity;
IncomingHandler(MainActivity activity) {
mainActivity = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
MainActivity activity = mainActivity.get();
if(activity != null) {
activity.doStuff();
}
}
}
这是处理上述警告的安全方法吗?
提前致谢。