gpt4 book ai didi

android - Android Context线程安全吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:19 26 4
gpt4 key购买 nike

当我在 AsyncTask#doInBackground 中使用 Android 上下文时,它是线程安全的吗?上下文是通过构造函数或通过周围 Activity 的 getApplicationContext() 提供的。这个简单的问题在 stackoverflow 和其他地方被问了很多,但我没有找到明确的答案?

例如在 doInBackground() 中,我使用上下文来实例化 DAO 类。

 @Override
protected Void doInBackground(Void... params) {

ExampleDao dao = new ExampleDao(context);
...

}

我看到几个以这种方式执行此操作的示例,但我无法想象这是线程安全的,因为上下文现在由主线程(UI 线程)和工作线程访问。

最佳答案

只要您不更改某些内容并且您仅通过上下文检索资源,您就可以始终从不同的线程访问上下文我没有发现线程安全问题。

问题是上下文将保留在内存中并且只要线程运行就处于 Activity 状态。这对您来说是一件好事,因为您可以始终依赖于有效的上下文。不好的是,如果您将 Activity 作为上下文传递,则该 Activity 的所有 View 和成员变量也将保留在内存中,这可能导致非常晚的垃圾回收占用大量内存,就像 Waqas 所建议的那样。

我不会从不同的 Thread 做的事情是从 Context 子类访问方法,如 setTheme()这将影响当前显示的 View 。

关于android - Android Context线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10598864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com