我似乎要围成一圈。 我有一些代码甚至在Galaxy S3上运行需要几秒钟。拖拽数据库中的数据。 我想在此周围添加一个进度条弹出窗口(旋转圆圈),以便为用户提供应用程序正在执行的操作。 我在应用程序的其他地方尝试了Asyntasks并且工作正常但是对于这种类型,主UI不等待Asyntask在继续之前完成,因此被调用的新活动没有它需要的所有数据并且崩溃。
AsyncTask是解决这个问题的最佳方法,还是有一种更方便的方法来调整主Activity,显示一个进度条,然后在完成长deley后再继续。
感谢您的时间
更新
public class UpdateDetailsAsyncTask extends AsyncTask<Void, Void, Boolean> {
private Context context;
private TaskCallback callback;
private ArrayList<Object> object;
private ProgressDialog progress;
public UpdateDetailsAsyncTask (
Context pContext,
ArrayList<Object> pObject,
TaskCallback pCallback) {
context = pContext;
callback = pCallback;
object = pObject;
}
@Override
protected void onPreExecute() {
Log.i("AsyncTask", "onPreExecuted");
progress = new ProgressDialog(context);
progress.setMessage(context.getResources().getString(R.string.loading));
progress.show();
}
@Override
protected Boolean doInBackground(Void... params) {
Log.i("Archery", "AsyncTask Excuted");
Log.i("Archery Scorepad", "Building Continue Round Details");
// Save Data to Database
return true;
}
protected void onPostExecute(Boolean result) {
Log.i("AsyncTask", "onPostExuted");
progress.dismiss();
callback.startNewActivity();
}
}
从主要活动
调用任务new UpdateDetailsAsyncTask(this, ArrayListOfObjects, this).exute();
更新2
...
更新3
执行某些工作的代码调用Util类中的一个方法,该方法在调用数据库类时。我有日志消息显示我保存到数据库的所有数据行。它正确启动并运行它,但onPostExecute()似乎在数据库方法完成之前被调用。
我的问题是我在活动中嵌套了类,当下面的类没有时,任务似乎已经完成了吗?
由于
答案 0 :(得分:2)
您必须从Asynctask
更改为onPostExecute
中的下一个活动
答案 1 :(得分:0)
是!
这是一个简单的AsuncTask代码
private class LoadImageAction extends AsyncTask<String, String, String>{
private Course course;
private ProgressBar pb;
public LoadImageAction(Course course, ProgressBar pb){
this.course = course;
this.pb = pb;
}
@Override
protected void onPreExecute(){
}
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
protected void onProgressUpdate(String... string){
}
@Override
protected void onPostExecute(String result){
}
}
您可以按
运行操作new LoadImageAction().execute();