【问题标题】:Android async task doesn't change uiAndroid异步任务不会改变用户界面
【发布时间】:2020-10-03 14:38:29
【问题描述】:

我一直致力于将视频分享到 Instagram 故事。为了下载文件,在下载时创建了一个异步任务并禁用了布局,除了一些控件。在 onPostExcute() 中,我启用了布局并开始通过意图共享活动。尽管在共享/取消共享后,用户界面仍然被禁用。这里是写在客栈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"));
}

【问题讨论】:

  • 查看设置数据并输入行sharingIntent.setDataAndType(uri,"video/mp4");
  • 我的建议对你有用吗?

标签: java android android-asynctask


【解决方案1】:

您是否正确声明了 AsyncTask 类?在构造函数以及 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 中的视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2013-03-29
    • 1970-01-01
    • 2012-10-26
    • 2022-12-17
    • 1970-01-01
    相关资源
    最近更新 更多