【发布时间】:2020-01-07 16:41:22
【问题描述】:
我有一个扩展 Asynctask 的类,我想访问我的活动或它的上下文。每次我尝试时,我都会得到 cannot be referenced from a static context 或 无法添加窗口 -- 令牌 null 不适用于应用程序 em>。
ps:我没有使用片段,它只是活动。
【问题讨论】:
我有一个扩展 Asynctask 的类,我想访问我的活动或它的上下文。每次我尝试时,我都会得到 cannot be referenced from a static context 或 无法添加窗口 -- 令牌 null 不适用于应用程序 em>。
ps:我没有使用片段,它只是活动。
【问题讨论】:
在异步任务中传递上下文时应该小心;你可以制造泄漏。如果您在声明任务时创建对它的弱引用并在需要使用它时通过调用 .get() 来获取该引用,则您可以在异步任务中与您的 Activity 进行交互。
private static class YourAsyncTask extends AsyncTask<String, String, String> {
Private WeakReference<YourActivity> weakReference;
YourAsyncTask(YourActivity context) {
weakReference = new WeakReference<>(context);
}
…
@Override
Protected void onPostExecute(String string) {
YourActivity activity = weakReference.get();
}
}
【讨论】: