首页 > 系统 > Android > 正文

Android AsyncTask用法巧用实例代码

2019-12-12 03:57:45
字体:
来源:转载
供稿:网友

Android AsyncTask

联系人导入

 new AsyncTask<ArrayList<ContactInfo>, Integer, ArrayList<ContactInfo>>() {                    @Override                    protected void onPreExecute() {                      super.onPreExecute();                      if (importingDialog != null)                        importingDialog.show();                    }                    @Override                    protected ArrayList<ContactInfo> doInBackground(ArrayList<ContactInfo>... params) {                      int importCount = 0;                      for (ContactInfo member : importListContact) {                        if (member.isCheck()) {                          importCount++;                          contactInsertHelper.insertSysContacts2Xphone(member);                          params[0].add(member);                          publishProgress(importCount);                        }                      }                      return params[0];                    }                    @Override                    protected void onProgressUpdate(Integer... values) {                      importingDialog.notifyByteProgress(count, values[0]);                    }                    @Override                    protected void onPostExecute(ArrayList<ContactInfo> contactInfos) {                      final ArrayList<String> names = new ArrayList<String>();                      final ArrayList<String> numbers = new ArrayList<String>();                      for (ContactInfo contactInfo : contactInfos) {                        for (int i = 0; i < contactInfo.getPhones().size(); i++) {                          numbers.add(contactInfo.getPhones().get(i).replaceAll(" ", ""));                          names.add(contactInfo.getName());                        }                      }                      Intent intent = new Intent("com.godinsec.importcomplete");                      intent.putStringArrayListExtra("numbers", numbers);                      intent.putStringArrayListExtra("names", names);                      ImportContactActivity.this.sendBroadcast(intent);                      Intent updateIntent = new Intent("com.godinsec.update.syscontacts");                      ImportContactActivity.this.sendBroadcast(updateIntent);                      handler.sendEmptyMessage(0);                    }                  }.execute(new ArrayList<ContactInfo>());

联系人删除

new LauncherContactDeleAsyncTask(mActivity, contactInfosDeles).execute(new ArrayList<String>());
package com.godinsec.contacts.core;import android.content.Context;import android.content.Intent;import android.os.AsyncTask;import com.godinsec.contacts.R;import com.godinsec.contacts.contactHelper.ContactInsertHelper;import com.godinsec.contacts.db.ApplicationSQLManger;import com.godinsec.contacts.dialog.ImportingDialog;import com.godinsec.contacts.model.ContactInfo;import java.util.ArrayList;/** * Created by Safly on 2016/9/23. */public class LauncherContactDeleAsyncTask extends AsyncTask<ArrayList<String>, Integer, ArrayList<String>> {  private Context mContext = null;  private ArrayList<ContactInfo> deleteListContacts;//总数  private ContactInsertHelper contactInsertHelper;  final ArrayList<String> deleContactPhones = new ArrayList<>();  private ImportingDialog importingDialog = null;  int deleCount = 0;  int deleAllCount = 0;  public LauncherContactDeleAsyncTask(Context mContext, ArrayList<ContactInfo> contactInfos) {    this.mContext = mContext;    this.deleteListContacts = contactInfos;    contactInsertHelper = new ContactInsertHelper(mContext);  }  @Override  protected void onPreExecute() {    super.onPreExecute();    importingDialog = new ImportingDialog(mContext,mContext.getResources().getString(R.string.gsettings_dele_contacts));    importingDialog.setCanceledOnTouchOutside(false);    if (importingDialog != null){      importingDialog.show();    }    for (ContactInfo member : deleteListContacts) {      if (member.isCheck()) {        deleAllCount++;      }    }  }  @Override  protected ArrayList<String> doInBackground(ArrayList<String>... params) {    for (ContactInfo member : deleteListContacts) {      if (member.isCheck()) {        //删除联系人        long contactServerFlag = ApplicationSQLManger.getInstance().getContactServerFlagByLauncherContact(mContext, member);        params[0].add(String.valueOf(contactServerFlag));        deleCount += contactInsertHelper.delete(mContext, member);        //传递要删除的号码        for (String phone : member.getPhones()) {          if (deleContactPhones != null) {            deleContactPhones.add(phone);          }        }        publishProgress(deleCount);      }    }    return params[0];  }  @Override  protected void onProgressUpdate(Integer... values) {    importingDialog.notifyByteProgress(deleAllCount, values[0]);  }  @Override  protected void onPostExecute(ArrayList<String> contactIds) {    super.onPostExecute(contactIds);    if (importingDialog.isShowing()) {      importingDialog.dismiss();    }    Intent updateIntent = new Intent("com.godinsec.update.syscontacts");    mContext.sendBroadcast(updateIntent);    Intent intent = new Intent("com.godinsec.delcontact");    intent.putStringArrayListExtra("numbers", deleContactPhones);    mContext.sendBroadcast(intent);  }}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表