我怎么知道何时使用AsyncTask完成后台线程?

问题描述 投票:0回答:2

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

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();
            }
        });
    }
java android android-asynctask
2个回答
1
投票

您可以这样操作:

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();
   }
}

1
投票

我认为这就是您的意思

    final TextView textView1 = findViewById(R.id.sample_text);
    final Handler uiHandler = new Handler(Looper.getMainLooper());
    AsyncTask.execute(new Runnable() {
        @Override
        public void run() {
            //... your work
            uiHandler.post(new Runnable() {
                @Override
                public void run() {
                    textView1.setText("finish");
                }
            });
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.