java - 是从线程线程安全调用 context.getApplicationContext 吗?
问题描述
我编写了以下代码来从数据库中读取一段数据,但我不确定代码是否是线程安全的,因为它是c.getApplicationContext
从不是 UI 线程的线程调用的。
public class chat extends AppCompatActivity
{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
final Context myContext = this;
AgentAsyncTask zx = new AgentAsyncTask(myContext);
zx.execute();
}
private static class AgentAsyncTask extends AsyncTask<Void, Void, List<Message>> {
private Context c;
public AgentAsyncTask(Context c) {
this.c = c;
}
@Override
protected List<Message> doInBackground(Void... params) {
List<Message> x = AppDatabase.getAppDatabase(c.getApplicationContext()).userDao().getAll();
return x;
}
@Override
protected void onPostExecute(List<Message> agentsCount) {
Toast.makeText(c, agentsCount.get(0).message, Toast.LENGTH_SHORT).show();
}
}
}
这个代码线程安全吗?我怀疑不是线程安全的行是:
List<Message> x = AppDatabase.getAppDatabase(c.getApplicationContext()).userDao().getAll();
解决方案
推荐阅读
- android - 在 Android 中获取拆分 APK 信息
- curl - 使用 curl 将文件推送到 GitHub 存储库
- javascript - 如何获取并显示从 postgres 查询到的数据到前端?
- javascript - 在 promise then mehod 中返回 Promise 对象时的执行顺序
- javascript - javascript如何重构这段代码,然后在axios内部传递一些不同的东西
- python - 如何使这个 python 正则表达式正常工作
- python - 从 model.json 文件加载架构
- android - “java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。” Android + 改造 + Asp.net API
- vbscript - 在 vbscript 中调用 EnumKey 作为安装程序查询 Windows 注册表中的自定义操作会导致 wbemErrNotFound
- ios - UICollectionView 无需滚动即可触发分页