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); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!