Android AsyncTask用法巧用實(shí)例代碼
更新時(shí)間:2017年01月21日 08:47:38 投稿:lqh
這篇文章主要介紹了Android AsyncTask用法巧用實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
Android AsyncTask
聯(lián)系人導(dǎo)入
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>());
聯(lián)系人刪除
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;//總數(shù)
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()) {
//刪除聯(lián)系人
long contactServerFlag = ApplicationSQLManger.getInstance().getContactServerFlagByLauncherContact(mContext, member);
params[0].add(String.valueOf(contactServerFlag));
deleCount += contactInsertHelper.delete(mContext, member);
//傳遞要?jiǎng)h除的號(hào)碼
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);
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
您可能感興趣的文章:
相關(guān)文章
Android定時(shí)器Timer的停止和重啟實(shí)現(xiàn)代碼
本篇文章主要介紹了Android實(shí)現(xiàn)定時(shí)器Timer的停止和重啟實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Android高仿2048小游戲?qū)崿F(xiàn)代碼
這篇文章主要介紹了Android高仿2048小游戲?qū)崿F(xiàn)代碼的相關(guān)資料,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10
android4.0混淆XmlPullParser報(bào)錯(cuò)原因分析解決
今天,用android4.0在proguard-project.txt中加入 -libraryjars libs/ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar這句話后,混淆時(shí)報(bào)上面的錯(cuò)誤,下面與大家分享下具體的解決方法2013-06-06
Android使用開(kāi)源框架ANDROID-IMAGE-INDICATOR實(shí)現(xiàn)圖片輪播部署
這篇文章主要為大家詳細(xì)介紹了Android使用開(kāi)源框架ANDROID-IMAGE-INDICATOR實(shí)現(xiàn)圖片輪播部署,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Android編程之在SD卡上進(jìn)行文件讀寫(xiě)操作實(shí)例詳解
這篇文章主要介紹了Android編程之在SD卡上進(jìn)行文件讀寫(xiě)操作的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android的文件操作及針對(duì)SD卡的存取操作相關(guān)技巧,需要的朋友可以參考下2015-12-12

