这是一个小小的XML动画,我正试图在应用程序从服务器获取JSON时关闭。获取所有数据大约需要2秒钟,所以我试图显示一些加载动画。
我遇到的问题是,在完成所有操作并且onPostExecute()关闭之前,图像不会改变。
我是否需要将视图传递给AsyncTask,还是其他什么?
在此AsyncTask完成之后最后一件事。如果你再次运行它会顺利运行。
XML
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/loadingtext1" android:duration="100" />
<item android:drawable="@drawable/loadingtext2" android:duration="100" />
<item android:drawable="@drawable/loadingtext3" android:duration="100" />
<item android:drawable="@drawable/loadingtext4" android:duration="100" />
</animation-list>
代码
private class LOGMEIN extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
CRY.CInit(DI, DU, DP);
publishProgress(0);
while(data != "whatineed"){
try {
Thread.sleep(450);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
completecheck = 1;
return "complete";
}
@Override
protected void onPreExecute() {
LOADINGTEXT.setBackgroundResource(R.drawable.animation);
AnimationDrawable LT = (AnimationDrawable) LOADINGTEXT.getBackground();
LT.start();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result.contentEquals("complete") == true) {
domorework();
} else {
finish();
}
}
}
答案 0 :(得分:0)
您是否在AsyncTask中设置了onPreExecute()?
protected void onPreExecute(){
//在这里展示您的动画装载机...
progress.show();}
我在onCreate()中使用它:
初始化:公共ProgressDialog进度;
progress = new ProgressDialog(this);
progress.setCancelable(true);
progress.setInverseBackgroundForced(false);
progress.setCanceledOnTouchOutside(true);
progress.setMessage("Loading.....");
答案 1 :(得分:0)
我不知道这是否是唯一的问题,但您正在比较String
中的loop
错误。
while (data != "whatineed")
应该是
while (!data.equals("whatineed"))
甚至更好
while (!"whatineed".equals(data))
比较值而不是对象引用