当我在{下运行代码时,我想用Toast
调用AsyncTask
类以通知用户保存过程正在开始时,我试图显示new saveWithStickers(BaseActivity.this).execute();
出于某种逻辑原因未调用{1}}方法,因此Toast也不会出现,onPreExecute()
是此行为的原因吗?
runOnUiThread
答案 0 :(得分:1)
以此替换代码
@SuppressLint("StaticFieldLeak")
public class saveWithStickers extends AsyncTask<Void, File, File> {
File fileSaved;
Context mContext;
saveWithStickers(Context context) {
mContext = context;
}
@Override
protected File doInBackground(Void... voids) {
fileSaved = FileUtil.getNewFile(BaseActivity.this, "PHOTO EDITOR");
if (fileSaved != null)
runOnUiThread(() -> stickerView.save(fileSaved, true));
return fileSaved;
}
@SuppressLint("SetTextI18n")
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(mContext, "Saving ...", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPostExecute(File file) {
super.onPostExecute(file);
}
}
要访问上下文,您需要将其传递或使用WeakRerefence到您的父级活动