是否可以公开访问(主UI片段的)处理程序有任何复杂性?

时间:2014-01-10 12:13:59

标签: android multithreading android-fragments

我需要创建一个可以由许多后台线程更新的UI片段。是否以下面显示的方式公开访问处理程序,是否有任何复杂性?我没有遇到任何人这样做,所以我有点担心。

public class MainFragment extends Fragment {

private static class MyHandler extends Handler {
    WeakReference<MainFragment> mFrag;

    MyHandler(MainFragment aFragment) {
        mFrag = new WeakReference<MainFragment>(aFragment);
    }

    @Override
    public void handleMessage(Message message) {
        // Unpack message and handle specific UI updates
        // calling MainFragment's methods using the
        // weak reference 'mFrag'
    }
}

private static MyHandler mHandler;

// Create handler on resume
@Override
public void onResume() {
    super.onResume();
    mHandler = new MyHandler(this);
}

@Override
// Destroy handler on pause
public void onPause() {
    super.onPause();
    mHandler = null;
}

// When a background thread wants to update the main
// UI, it calls this method as
// MainFragment.getHandler().post(message)
public static Handler getHandler() {
    return mHandler;
}

}

1 个答案:

答案 0 :(得分:0)

这不是一个非常干净的设计,但如果你担心的话,它不应该泄漏记忆。