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);
}
(编辑)
差点忘了:不要调用yourAsyncTaskInstance.doInBackground()
,否则onPostExecute()
不会运行。
而是调用 yourAsyncTaskInstance.execute()
。它将允许 AsyncTask 的所有 4 个部分,即 onPreExecute()
、doInBackground()
、onProgressUpdate()
和 onPostExecute()
到 运行。如果您还没有禁用 onPreExecute
中的视图。
我一直致力于将视频分享到 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);
}
(编辑)
差点忘了:不要调用yourAsyncTaskInstance.doInBackground()
,否则onPostExecute()
不会运行。
而是调用 yourAsyncTaskInstance.execute()
。它将允许 AsyncTask 的所有 4 个部分,即 onPreExecute()
、doInBackground()
、onProgressUpdate()
和 onPostExecute()
到 运行。如果您还没有禁用 onPreExecute
中的视图。