【问题标题】:get activity inside of static class在静态类中获取活动
【发布时间】:2020-01-07 16:41:22
【问题描述】:

我有一个扩展 Asynctask 的类,我想访问我的活动或它的上下文。每次我尝试时,我都会得到 cannot be referenced from a static context无法添加窗口 -- 令牌 null 不适用于应用程序 em>

ps:我没有使用片段,它只是活动。

【问题讨论】:

    标签: android static


    【解决方案1】:

    在异步任务中传递上下文时应该小心;你可以制造泄漏。如果您在声明任务时创建对它的弱引用并在需要使用它时通过调用 .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();
        }
    
    }
    

    【讨论】:

    • 当我尝试执行 Asynctask 类时抛出此错误:无法添加窗口 -- 令牌 null 不适用于应用程序
    • @Paya 您必须添加所有相关代码,以便我们更好地解决问题。
    • 我发现了这个问题。非常感谢您在上下文方面提供帮助。
    • @Paya 很高兴您能够弄清楚。感谢您接受答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多