Android AsyncTask用法巧用实例代码

 更新时间:2017年01月21日 08:47:38   投稿:lqh  
这篇文章主要介绍了Android AsyncTask用法巧用实例代码的相关资料,需要的朋友可以参考下

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内部存储改变读取权限的方法

    Android内部存储改变读取权限的方法

    今天小编就为大家分享一篇Android内部存储改变读取权限的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Flutter下载更新App的方法示例

    Flutter下载更新App的方法示例

    这篇文章主要介绍了Flutter下载更新App的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Android实现可复用的选择页面

    Android实现可复用的选择页面

    这篇文章主要为大家详细介绍了Android实现可复用的选择页面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Android开发Jetpack组件ViewModel与LiveData使用讲解

    Android开发Jetpack组件ViewModel与LiveData使用讲解

    Jetpack是一个由多个技术库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者精力集中编写重要的代码
    2022-09-09
  • Android中调用另一个Activity并返回结果(选择头像功能为例)

    Android中调用另一个Activity并返回结果(选择头像功能为例)

    这篇文章主要介绍了Android中调用另一个Activity并返回结果,本文以模拟选择头像功能为例通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2020-01-01
  • 浅谈谈Android 图片选择器

    浅谈谈Android 图片选择器

    近段时间有项目要求写一个类似于微信发送图片时,用来选择照片的一个图片浏览器。相信有很多网友也有这样的需求,这里分享给大家
    2015-12-12
  • android验证邮箱输入是否合法

    android验证邮箱输入是否合法

    这篇文章主要为大家详细介绍了android验证邮箱输入是否合法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 使用Android studio编写一个小的jni程序

    使用Android studio编写一个小的jni程序

    JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。这篇文章给大家介绍了基于Android studio写一个小的jni程序的方法,一起看看吧
    2018-03-03
  • Android仿IOS ViewPager滑动进度条

    Android仿IOS ViewPager滑动进度条

    这篇文章主要为大家详细介绍了Android仿IOS ViewPager滑动进度条的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android实现ViewFlipper图片动画滑动

    Android实现ViewFlipper图片动画滑动

    这篇文章主要为大家详细介绍了Android实现ViewFlipper图片动画滑动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论