Android异步任务不会更改ui

问题描述 投票:0回答:1

我一直在将视频分享到instagram故事中。为了下载文件,创建了一个异步任务并禁用了布局,但在下载时有些控件除外。在onPostExcute()中,我启用了布局并开始通过意图共享活动。尽管共享/取消共享后,UI仍被禁用。这是inn 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"));
}
java android android-asynctask
1个回答
0
投票

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

并且,如果您只希望使用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内部的视图。

© www.soinside.com 2019 - 2024. All rights reserved.