在我的应用程序中,我正在从URL中检索一些数据,因此,我使用AsyncTask
在应用程序中实现了进度条,但应用程序既没有显示进度条也没有显示我的数据。如果我在loadDataFromURL()
方法中调用onCreate()
方法,那么我的数据会加载但是,我必须等待一段时间。请检查下面的代码。
public class MainActivity extends Activity
{
Context context;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
}
private void loadDataFromURL()
{
// Here I load some data from URL
}
ProgressDialog dialog;
class LoadData extends AsyncTask<Void, Void, Void>
{
protected void onPreExecute()
{
dialog = ProgressDialog.show(context, "Loading...", null);
}
protected Void doInBackground(Void... unused)
{
try
{
loadDataFromURL();
Log.d("-DONE", "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
}
catch(Exception e)
{
Log.d("-ERORR", "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE");
}
return null;
}
protected void onProgressUpdate(Void... unused)
{
}
protected void onPostExecute(Void unused)
{
dialog.dismiss();
}
}
}
答案 0 :(得分:0)
您缺少对异步任务的调用, 添加
new LoadData().execute();
在onCreate
答案 1 :(得分:0)
您可以从我们的Activity Oncreate执行或运行AsyncTask。
通过LoadData.execute();
此方法运行AsyncTask。
由于
答案 2 :(得分:0)
在UI线程上加载Asyntask。你应该调用execute来加载asynctask。您自己的覆盖方法添加了@Override Annotation。您可以使用以下内容作为参考。你的doInbackground什么都不做。所以你可能看不到对话框,因为asynctask非常快地完成了它的操作。做一些计算,以便您可以看到对话框。
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("Loading...");
new LoadData().execute(); // load asynctsk on ui thread
}
private void loadDataFromURL()
{
// Here I load some data from URL
}
class LoadData extends AsyncTask<Void, Void, Void>
{
@Override // missing the override annotation
protected void onPreExecute()
{
super.onPreExecute() // missing super call
dialog.show(); // show dialog
}
@Override
protected Void doInBackground(Void... unused)
{
try
{
loadDataFromURL(); // do network related operation here
Log.d("-DONE", "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
//do not update ui here
}
catch(Exception e)
{
Log.d("-ERORR", "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE");
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values); // missing super call
}
@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result) // missing super call
dialog.dismiss();
}
}
}
请查看以下链接以获取更多信息
http://developer.android.com/reference/android/os/AsyncTask.html