在 Apress Pro Android 4 中,作者说:
旋转设备时,[...]当前正在运行的活动的上下文将不再有效。 [...]一种方法是使用对活动的弱引用而不是硬引用[...]
但是作者只是建议这一点,并没有说明它是如何完成的。谁曾经这样做过请给我一个例子。
答案 0 :(得分:75)
在您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
}
答案 1 :(得分:3)
以下是存储上下文的WeakReference示例;
WeakReference<Context> cReference = new WeakReference<Context>(getApplicationContext());
现在我们可以使用这个weakReference来做与Activity / Context相关的工作。
答案 2 :(得分:1)