AsyncTask Android ProgressBar未显示[可能重复]

时间:2013-08-21 12:52:33

标签: android android-asynctask android-progressbar

首先我要说的是,我知道在S.O上有几个类似的问题,但他们没有回答我的问题......

首先让我告诉你我的代码:

我有一个片段,当它加载时它向服务器发送请求,解析服务器返回的JSON,然后将解析后的JSON作为对象返回。

我在onCreateView方法中初始化一个进度条:

bar = (ProgressBar) mainView.findViewById(R.id.progressBar);

然后我创建了一个Asynctask扩展类的实例:

PolisotAsyncInfo task = new PolisotAsyncInfo();

然后调用execute方法,然后调用get函数:“

task.execute(new PolisotAsyncParameter(ClientMainActivity.mToken,ClientMainActivity.mUserID));
Object o = task.get();
  

我认为这是我做错了但不确定,我需要使用   get()方法因为我需要doInBackround的数据   返回....

此时编译器转到onPreExecute方法,我将条设置为可见:

bar.setVisibility(View.VISIBLE);
在doInBackround方法运行之后

执行所有不相关的东西

然后在那里调用onPostExecute方法我将栏设置为GONE:

bar.setVisibility(View.GONE);

任何帮助都会受到赞赏的人,我有点迷失在这里......

谢谢!

1 个答案:

答案 0 :(得分:2)

我相信这条线是您怀疑的问题,

Object o = task.get();

get()阻止UI Thread。根据您的确切需求和配置,您可以使用不同的选项来获取数据。

  1. 您可以从Activity调用onPostExecute()方法对数据执行某些操作。你如何做到这一点取决于它是否是一个内在的类。如果是那么没有问题。如果它是一个单独的文件,那么您可以将Activity引用传递给AsyncTask构造函数,并使用它来调用Activity方法。 These SO answers show how to do this

  2. 您还可以在AsyncTask完成后使用界面创建回调。 This SO answer covers doing this