Android AsyncTask用法巧用实例代码
AndroidAsyncTask
联系人导入
newAsyncTask<ArrayList<ContactInfo>,Integer,ArrayList<ContactInfo>>(){
@Override
protectedvoidonPreExecute(){
super.onPreExecute();
if(importingDialog!=null)
importingDialog.show();
}
@Override
protectedArrayList<ContactInfo>doInBackground(ArrayList<ContactInfo>...params){
intimportCount=0;
for(ContactInfomember:importListContact){
if(member.isCheck()){
importCount++;
contactInsertHelper.insertSysContacts2Xphone(member);
params[0].add(member);
publishProgress(importCount);
}
}
returnparams[0];
}
@Override
protectedvoidonProgressUpdate(Integer...values){
importingDialog.notifyByteProgress(count,values[0]);
}
@Override
protectedvoidonPostExecute(ArrayList<ContactInfo>contactInfos){
finalArrayList<String>names=newArrayList<String>();
finalArrayList<String>numbers=newArrayList<String>();
for(ContactInfocontactInfo:contactInfos){
for(inti=0;i<contactInfo.getPhones().size();i++){
numbers.add(contactInfo.getPhones().get(i).replaceAll("",""));
names.add(contactInfo.getName());
}
}
Intentintent=newIntent("com.godinsec.importcomplete");
intent.putStringArrayListExtra("numbers",numbers);
intent.putStringArrayListExtra("names",names);
ImportContactActivity.this.sendBroadcast(intent);
IntentupdateIntent=newIntent("com.godinsec.update.syscontacts");
ImportContactActivity.this.sendBroadcast(updateIntent);
handler.sendEmptyMessage(0);
}
}.execute(newArrayList<ContactInfo>());
联系人删除
newLauncherContactDeleAsyncTask(mActivity,contactInfosDeles).execute(newArrayList<String>());
packagecom.godinsec.contacts.core;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.os.AsyncTask;
importcom.godinsec.contacts.R;
importcom.godinsec.contacts.contactHelper.ContactInsertHelper;
importcom.godinsec.contacts.db.ApplicationSQLManger;
importcom.godinsec.contacts.dialog.ImportingDialog;
importcom.godinsec.contacts.model.ContactInfo;
importjava.util.ArrayList;
/**
*CreatedbySaflyon2016/9/23.
*/
publicclassLauncherContactDeleAsyncTaskextendsAsyncTask<ArrayList<String>,Integer,ArrayList<String>>{
privateContextmContext=null;
privateArrayList<ContactInfo>deleteListContacts;//总数
privateContactInsertHelpercontactInsertHelper;
finalArrayList<String>deleContactPhones=newArrayList<>();
privateImportingDialogimportingDialog=null;
intdeleCount=0;
intdeleAllCount=0;
publicLauncherContactDeleAsyncTask(ContextmContext,ArrayList<ContactInfo>contactInfos){
this.mContext=mContext;
this.deleteListContacts=contactInfos;
contactInsertHelper=newContactInsertHelper(mContext);
}
@Override
protectedvoidonPreExecute(){
super.onPreExecute();
importingDialog=newImportingDialog(mContext,mContext.getResources().getString(R.string.gsettings_dele_contacts));
importingDialog.setCanceledOnTouchOutside(false);
if(importingDialog!=null){
importingDialog.show();
}
for(ContactInfomember:deleteListContacts){
if(member.isCheck()){
deleAllCount++;
}
}
}
@Override
protectedArrayList<String>doInBackground(ArrayList<String>...params){
for(ContactInfomember:deleteListContacts){
if(member.isCheck()){
//删除联系人
longcontactServerFlag=ApplicationSQLManger.getInstance().getContactServerFlagByLauncherContact(mContext,member);
params[0].add(String.valueOf(contactServerFlag));
deleCount+=contactInsertHelper.delete(mContext,member);
//传递要删除的号码
for(Stringphone:member.getPhones()){
if(deleContactPhones!=null){
deleContactPhones.add(phone);
}
}
publishProgress(deleCount);
}
}
returnparams[0];
}
@Override
protectedvoidonProgressUpdate(Integer...values){
importingDialog.notifyByteProgress(deleAllCount,values[0]);
}
@Override
protectedvoidonPostExecute(ArrayList<String>contactIds){
super.onPostExecute(contactIds);
if(importingDialog.isShowing()){
importingDialog.dismiss();
}
IntentupdateIntent=newIntent("com.godinsec.update.syscontacts");
mContext.sendBroadcast(updateIntent);
Intentintent=newIntent("com.godinsec.delcontact");
intent.putStringArrayListExtra("numbers",deleContactPhones);
mContext.sendBroadcast(intent);
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!