片段的静态处理程序?

Static handler for fragments?

我阅读了 this piece 关于使用内部静态处理程序 class 来避免内存泄漏的内容。

我把内部的class放在一个activityclassBaseActivity里面,其他的activities extend。处理程序在 activity classes:

中工作正常
public abstract class BaseActivity extends AppCompatActivity {

    public Handler handler = new StaticHandler(this);

    public static class StaticHandler extends Handler {

        private final WeakReference<BaseActivity> mActivity;

        public StaticHandler(BaseActivity activity) {
            mActivity = new WeakReference<BaseActivity>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            BaseActivity activity = mActivity.get();
            if (activity != null) {
                // ...
            }
        }
    }
}

如果我想在片段中使用处理程序,是否可以从 Base Activity 调用 StaticHandler?我找不到办法做到这一点。我应该在片段 class 中创建另一个静态处理程序吗?将 BaseActivity 中的 handler 传递给片段而不是在片段中实例化一个新片段是否更好?

public class SomeFragment extends Fragment{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             final Bundle savedInstanceState) {

           Runnable runnable = new Runnable(){....};
           Handler handler = new BaseActivity.StaticHandler(getActivity()); // It won't work because the getActivity() doesn't match BaseActivity 
           handler.post(runnable)


    }
}

因为 BaseActivity 扩展 AppCompatActivity 所以从 Fragment 传递 AppCompatActivity 上下文为:

Handler handler = new BaseActivity.StaticHandler((BaseActivity)getActivity());

还在 BaseActivity 中初始化 handler 对象而不是在 class 级别的任何方法中。