【发布时间】:2016-06-29 04:42:13
【问题描述】:
我阅读了this piece 关于使用静态处理程序内部类来避免内存泄漏的信息。
我将内部类放在一个活动类BaseActivity 中,其他活动扩展了该活动。处理程序在活动类中工作正常:
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) {
// ...
}
}
}
}
如果我想在片段中使用处理程序,是否可以从基本活动调用StaticHandler?我找不到办法。我应该在片段类中创建另一个静态处理程序吗?将 handler 从 BaseActivity 传递给片段而不是在片段中实例化一个新的更好吗?
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)
}
}
【问题讨论】:
标签: java android android-fragments android-handler