不调用onPreExexute方法

时间:2019-07-10 12:44:34

标签: java android android-asynctask android-runonuithread

当我在{下运行代码时,我想用Toast调用AsyncTask类以通知用户保存过程正在开始时,我试图显示new saveWithStickers(BaseActivity.this).execute();出于某种逻辑原因未调用{1}}方法,因此Toast也不会出现,onPreExecute()是此行为的原因吗?

runOnUiThread

1 个答案:

答案 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到您的父级活动