java - 我如何知道 AsyncTask 后台线程何时完成?

标签 java android android-asynctask

我用带有后台线程的字符串获取人们的姓名和电话号码,并在某个地方使用它们。一切正常,但我想做点什么。我想在这个线程用完时向用户展示一些东西。但我不知道如何检查该线程的状况。如果您有帮助,我将不胜感激。提前致谢。

cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,
                ContactsContract.Contacts.DISPLAY_NAME + " ASC");

        AsyncTask.execute(new Runnable() {
            @Override
            public void run() {

                while (cursor.moveToNext()){

                    String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).trim();

                }
                cursor.close();
            }
        });
    }

最佳答案

你可以这样做:

public class Processing extends AsyncTask<Void, Void, Void>

  ProgressDialog mProgress;
  @Override
        protected void onPreExecute() {
        super.onPreExecute();
        mProgress = new ProgressDialog(YOUR_ACTIVITIY.this);
        mProgress.setTitle("Processing");
        mProgress.setMessage("Please wait ...");
        mProgress.show();

        @Override
        protected Void doInBackground(Void... voids) {
        cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,
                ContactsContract.Contacts.DISPLAY_NAME + " ASC");

        AsyncTask.execute(new Runnable() {
            @Override
            public void run() {

                while (cursor.moveToNext()){

                    String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).trim();

                }
                cursor.close();
            }
        });
    }
}
 @Override
    protected void onPostExecute(Void v) {
        super.onPostExecute(v);
        mProgress.dismiss();
   }
}

关于java - 我如何知道 AsyncTask 后台线程何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59473713/

相关文章:

java - 使用 RSA 加密长字符串 (Java)

java - 如何获取 Java gDrive api 的 com.google.common.base.Precondition 类?

java - 全局 MediaPlayer 声明不起作用

android - Eclipse:将 Android ADT 更新到修订版 23.0.5 后找不到 R

android - 将 ABS ViewPager 与自定义 ActionBar View 结合使用

java - 如何从 onCreatemethod 调用 AsyncTask?

android - 为什么在单独的线程上完成工作时 UI 线程会被阻塞?

java - 收集器的组合器功能可以用于顺序流吗?

java - 我无法从 REST API URL 获取 JSON 对象

java - 来自 Android 的 OpenCV 中的投资返回率