Android 异步任务没有改变 ui

Android async task doesn't change ui

我一直致力于将视频分享到 Instagram 快拍。为了下载文件,在下载时创建了一个异步任务并禁用了布局,但某些控件除外。在 onPostExcute() 中,我启用了布局并开始通过意图共享 activity。虽然在 sharing/cancelling 共享后 ui 仍然被禁用。这里写客栈onPostExecute()的代码。

@Override
    protected void onPostExecute(String file_url) {
        videoLoading.setVisibility(View.INVISIBLE);

        layout.setEnabled(true);
        Uri uri = Uri.parse(filePath);
        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        String shareBody = presenter.getVideoName();
        sharingIntent.setDataAndType(uri, "vide/mp4");
        startActivity(Intent.createChooser(sharingIntent, "Share using"));
}

您是否正确声明了 AsyncTask class?在构造函数以及 doInBackground 和 onPostExecute 中使用正确的 Params 数据类型。

如果您只想让 Instagram 快拍处理您的意图,您可以这样做:

Intent shareIntent = new Intent("com.instagram.share.ADD_TO_STORY");
shareIntent.setDataAndType(fileUri,"video/*");
shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

if (shareIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(shareIntent);
}

来源:Sharing to Stories

(编辑)
差点忘了:不要调用yourAsyncTaskInstance.doInBackground(),否则onPostExecute()不会运行。
而是调用 yourAsyncTaskInstance.execute()。它将允许 AsyncTask 的所有 4 个部分,即 onPreExecute()doInBackground()onProgressUpdate()onPostExecute() 到 运行。如果您还没有禁用 onPreExecute 中的视图。