Android 异步任务有时有效,有时无效

Android 异步任务有时有效,有时无效,android,android-studio,android-asynctask,Android,Android Studio,Android Asynctask,第一次尝试实现AsyncTask。当我第一次启动应用程序时,它会工作并显示“加载消息”对话框(尽管微调器不会!),但在我启动“活动”时,应用程序会冻结数秒(在后台加载),没有明显的ProgressDialog或调用的“活动”,这意味着AsyncTask不工作。这是我的密码 private class PrepareFragments extends AsyncTask<Void, Void, ArrayList<Cursor>> { ProgressDialog

第一次尝试实现AsyncTask。当我第一次启动应用程序时,它会工作并显示“加载消息”对话框(尽管微调器不会!),但在我启动“活动”时,应用程序会冻结数秒(在后台加载),没有明显的ProgressDialog或调用的“活动”,这意味着AsyncTask不工作。这是我的密码

private class PrepareFragments extends AsyncTask<Void, Void, ArrayList<Cursor>> {

    ProgressDialog pd;
    ArrayList<Cursor> cursors;

    @Override
    protected void onPreExecute() {
        Log.d("onPre : ", "true");

        pd = new ProgressDialog(CategoryDrugs.this);
        pd.show();
        pd.setMessage("Loading...");
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd.setProgress(0);
        pd.setMax(100);

    }

    @Override
    protected ArrayList<Cursor> doInBackground(Void ... arg) {
        Log.d("doInBG : ", "true");

        // my custom code here

    }


    @Override
    protected void onProgressUpdate(Void... values) {
        pd.incrementProgressBy(1);
    }

    @Override
    protected void onPostExecute(ArrayList<Cursor> cursor) {
        Log.d("onPost : ", "true");

        if (pd.isShowing()) {
            pd.dismiss();
        }
    }


}
私有类PrepareFragments扩展异步任务{
进展性帕金森病;
数组列表游标;
@凌驾
受保护的void onPreExecute(){
Log.d(“onPre:,“true”);
pd=新进展对话框(CategoryDrugs.this);
pd.show();
pd.setMessage(“加载…”);
pd.setProgressStyle(ProgressDialog.STYLE_水平);
pd.setProgress(0);
pd.setMax(100);
}
@凌驾
受保护的ArrayList doInBackground(无效…arg){
Log.d(“doInBG:,“true”);
//我的自定义代码在这里
}
@凌驾
受保护的void onProgressUpdate(void…值){
pd.增加进度(1);
}
@凌驾
受保护的void onPostExecute(ArrayList游标){
Log.d(“onPost:,“true”);
if(pd.isShowing()){
pd.解散();
}
}
}

如果您的doInBackground执行得非常快,则该对话框可能不会显示或只是闪烁。 +电话秀终于开始了

pd = new ProgressDialog(CategoryDrugs.this);
pd.setMessage("Loading...");
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setProgress(0);
pd.setMax(100);
pd.show();
尝试使用executor

new PrepareFragments().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

您从何处开始aync任务Inside onCreate()。。。。下面是代码“new PrepareFragments().execute();”您是否在
doinbackgound
方法中关闭了数据库?是的,在恢复时将其移入仍然是相同的结果对话框根本没有问题。父活动在显示目标活动之前需要很长时间。请检查您是否在onCreate中执行了很多操作