我如何知道后台线程何时使用 AsyncTask 完成?
How do I know when the background thread is finished with AsyncTask?
我把名字和 phone 人的名字和人数与后台线程一起使用,并在某个地方使用它们。一切正常,但我想做点什么。当这个线程用完时,我想向用户展示一些东西。但我不知道如何检查该线程的状况。如果你有帮助,我将不胜感激。提前致谢。
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();
}
});
}
我想这就是你的意思
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");
}
});
}
});
你可以这样做:
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();
}
}
我把名字和 phone 人的名字和人数与后台线程一起使用,并在某个地方使用它们。一切正常,但我想做点什么。当这个线程用完时,我想向用户展示一些东西。但我不知道如何检查该线程的状况。如果你有帮助,我将不胜感激。提前致谢。
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();
}
});
}
我想这就是你的意思
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");
}
});
}
});
你可以这样做:
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();
}
}