弱引用活动

时间:2016-08-28 08:48:52

标签: java android android-service weak-references

我希望通过消息传递实现ActivityIntentService之间的双向通信。

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();
        }
    }
}

这是处理上述警告的安全方法吗?

提前致谢。

0 个答案:

没有答案