我需要创建一个可以由许多后台线程更新的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;
}
}
答案 0 :(得分:0)
这不是一个非常干净的设计,但如果你担心的话,它不应该泄漏记忆。