Я написал следующий код для чтения части данных из базы данных, но я не уверен, является ли этот код потокобезопасным или нет, поскольку он вызывает c.getApplicationContext
из потока, который не является потоком пользовательского интерфейса.
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();