Android异步任务不会改变用户界面
Posted
技术标签:
【中文标题】Android异步任务不会改变用户界面【英文标题】:Android async task doesn't change ui 【发布时间】: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"); 我的建议对你有用吗? 【参考方案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
中的视图。
【讨论】:
以上是关于Android异步任务不会改变用户界面的主要内容,如果未能解决你的问题,请参考以下文章