Android Asyntask:使用弱引用作为上下文,以避免设备旋转屏幕
2022-09-01 06:25:06
在Apress Pro Android 4中,作者曾说过:
[...]旋转设备时,当前正在运行的活动的上下文将不再有效。[...]一种方法是使用对活动的弱引用而不是硬引用[...]
但作者只是建议这一点,并没有说明它是如何完成的。以前谁做过这个,请给我举个例子。
在Apress Pro Android 4中,作者曾说过:
[...]旋转设备时,当前正在运行的活动的上下文将不再有效。[...]一种方法是使用对活动的弱引用而不是硬引用[...]
但作者只是建议这一点,并没有说明它是如何完成的。以前谁做过这个,请给我举个例子。
在你的某个地方,你会想通过你的活动。然后,将该引用保存在弱引用中。然后,您可以取消引用并在 中再次使用它。AsyncTask
onPostExecute
类成员:
WeakReference<Activity> weakActivity;
中的某个位置,可能是构造函数或:AsyncTask
onPreExecute
weakActivity = new WeakReference<Activity>(activity);
在:onPostExecute
Activity activity = weakActivity.get();
if (activity != null) {
// do your stuff with activity here
}
下面是一个用于存储上下文的弱引用示例;
WeakReference<Context> cReference = new WeakReference<Context>(getApplicationContext());
现在我们可以使用这个弱引用来做与活动/上下文相关的工作。