編輯:關於Android編程
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); } }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
首先聲明一點: 這裡的多線程下載並不是指多個線程下載一個 文件,而是每個線程負責一個文件,今天給大家分享一個多線程下載的 例子。先看一下效果,點擊下載開始下載,同時顯示下
在Android中,很多人會用如下的方法判斷當前網絡是否可用:/** * 獲取當前網絡狀態(是否可用) */ public static boolean isNetwor
我們生活中使用微信,如果看到的好東西,如小視頻,圖片,小段子等等,就會收藏起來,那麼微信收藏怎麼導出到電腦呢?不清楚的朋友可以來看看微信收藏導出到電腦方法流
1. 開發環境Mac OS X , Android Studio 2.1.2 2. 創建新工程創建SerialPortDemo工程, Minimum SDK 選
測試環境: win7 64 g++ 4.8.1 /*