Android AsyncTask用法巧用实例代码

发布时间 - 2026-01-10 22:41:17    点击率:

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  # AsyncTask  # AsyncTask详解  # AsyncTask实例代码  # Android AsyncTask实现异步处理任务的方法详解  # Android使用AsyncTask下载图片并显示进度条功能  # Android AsyncTask的优缺点详解  # android使用AsyncTask实现多线程下载实例  # Android中使用AsyncTask做下载进度条实例代码  # Android AsyncTask使用以及源码解析  # Android中使用AsyncTask实现文件下载以及进度更新提示  # Android AsyncTask详解及使用方法  # 希望能  # 谢谢大家  # onPostExecute  # count  # notifyByteProgress  # String  # final  # contactInfos  # values  # add  # insertSysContacts2Xphone  # contactInsertHelper  # onProgressUpdate  # return  # publishProgress  # names  # importcomplete  # godinsec  # intent  # sendBroadcast 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速上传自定义模板至建站之星?  ,网页ppt怎么弄成自己的ppt?  Python函数文档自动校验_规范解析【教程】  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何快速查询网址的建站时间与历史轨迹?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  如何在橙子建站上传落地页?操作指南详解  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  phpredis提高消息队列的实时性方法(推荐)  Laravel中的Facade(门面)到底是什么原理  用yum安装MySQLdb模块的步骤方法  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  如何在阿里云虚拟服务器快速搭建网站?  如何获取PHP WAP自助建站系统源码?  Laravel Fortify是什么,和Jetstream有什么关系  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Java解压缩zip - 解压缩多个文件或文件夹实例  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  深入理解Android中的xmlns:tools属性  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel如何自定义分页视图?(Pagination示例)  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  Laravel怎么使用Intervention Image库处理图片上传和缩放  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  iOS中将个别页面强制横屏其他页面竖屏  PHP正则匹配日期和时间(时间戳转换)的实例代码  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  如何在服务器上配置二级域名建站?  Java垃圾回收器的方法和原理总结  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  如何选择PHP开源工具快速搭建网站?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  如何用好域名打造高点击率的自主建站?  网站图片在线制作软件,怎么在图片上做链接?  如何在橙子建站中快速调整背景颜色?  如何彻底卸载建站之星软件?  如何在阿里云ECS服务器部署织梦CMS网站?  如何在阿里云虚拟主机上快速搭建个人网站?  js代码实现下拉菜单【推荐】  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何在万网自助建站平台快速创建网站?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程