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); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍JavaScript实用代码小技巧,包括了JavaScript实用代码小技巧的使用技巧和注意事项,需要的朋友参考一下 在上次的 “Chrome DevTools 你可能不知道的小技巧” 文中,得到很多开发朋友的反馈确实不知道这些小技巧。今天,我们来聊一聊在 EcmaScript5/6+ 中的一些小技巧,欢迎评论区讨论下更多技巧。 JSON.stringify 我们平时经常会用到JSO
本文向大家介绍numpy使用技巧之数组过滤实例代码,包括了numpy使用技巧之数组过滤实例代码的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是numpy使用技巧之数组过滤的相关内容,具体如下。 当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间,注意这种方式只对应于布尔数组(array
本文向大家介绍JavaScript代码简化技巧实例解析,包括了JavaScript代码简化技巧实例解析的使用技巧和注意事项,需要的朋友参考一下 函数式编程可以使您的代码更简单。简单意味着代码易于阅读和理解,可测试和可维护。 在本文中,我描述了一些函数式编程(FP)技巧,您可以使用它们来简化代码,从而使代码更好。 摆脱临时变量和不变性原则 函数式编程倾向于不变性,这种不变性原则意味着在初始化变量之后
We’re going to use Sinatra in a similar manner to how we used Express in the last chapter. It will power a RESTful API supporting CRUD operations. Together with a MongoDB data store, this will allow u
本文向大家介绍AngularJS extend用法详解及实例代码,包括了AngularJS extend用法详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 AngularJS extend用法 angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝赋给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象。
如何给GRUB2菜单加上背景图? 首先制作一张PNG格式的图片,分辨率最好是"1024x768"以保证较好的兼容性。然后将这张图片放到"$prefix/themes/1024x768.png"("$prefix"是GRUB2的安装目录)。然后在'grub.cfg'中加入如下内容: set gfxmode=1024x768,auto insmod gfxterm insmod png termin