В одну сторону, в doInBackground
:
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(<your class name>.this, "hello", Toast.LENGTH_SHORT).show();
}
});
Или в onPostExecute
(который вызывается в потоке пользовательского интерфейса после завершения фоновых вычислений)
Toast.makeText(<your class name>.this, "hello", Toast.LENGTH_SHORT).show();
Отредактировано: если вы хотите передать контекст AsyncTask ,, вы можете сделать так:
public class MyAsyncTask extends AsyncTask<Void, Integer, List<List<String>>>
private final Context mContext;
public MyAsyncTask(final Context context) {
mContext = context;
}
}
А в MainActivity :
final MyAsyncTask task = new MyAsyncTask(getApplicationContext());
task.execute();
Повторно отредактировано:
Я успешно протестировал WeakReference.
public class ExampleAsyncTask extends AsyncTask {
private WeakReference<Context> contextRef;
public ExampleAsyncTask(Context context) {
contextRef = new WeakReference<>(context);
}
@Override
protected void onPostExecute(Object result) {
Context context = contextRef.get();
if (context != null) {
Toast.makeText(context, "hello", Toast.LENGTH_SHORT).show();
}
}
}
В MainActivity:
new ExampleAsyncTask(MainActivity.this).execute();