开发经验交流-----ServiceUtil工具类

               大家好,今晚给大家分享的是我在开发中经常用到的一个自定义工具类,可以说服务工具类,我们开发项目当中,有一个模块是设置模块,如下图,有个黑名单列表点击列表开启复选项,表示服务开启了,这里有个问题就是说,我是已经点击了复选框服务开启,退出页面,再次进入设置中心页面,那么黑名单复选框肯定会没勾选,服务也停止,因为你的activity已经更新,状态发生改变了。要想解决这个问题,我想到了,同步服务的方法,就是说,当你点击了复选框,我通过工具类找到本应用的服务状态,然后进行判断,加入服务是开启的,我刷新过的activity的服务也是开启的,也就是复选框已经勾选了。要实现这功能,我封装了服务工具类,每次有需要保持服务的状态就可以调用这方法,可以理解为前几讲讲到封装sharedPreferences的性质是差不多的。下面我以一个例子为例加深大家印象。

开发经验交流-----ServiceUtil工具类_第1张图片


我这次上的代码是片段的代码,涉及的知识点就一点,我就没必要吧全部代码弄上来。


//设置黑黑名单
 private void setBlackNum() {

  //调用服务工具类方法。boolean类型,参数二:你要开启的服务包名,作为参数在工具类使用
  boolean blackNumState = ServiceUtil.isRuningService(context,
    "com.example.phonesafe.service.BlackNumService");

//回显作用,表示下次进入要显示的状态

//判断值为true,服务开启,复选框勾选
  if (blackNumState) {
   mBlackNum_sv.setChecked(true);

//判断值为false,服务关闭,复选框没勾选
  } else {
   mBlackNum_sv.setChecked(false);
  }

//列表点击事件

  mBlackNum_sv.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {

//创建意图,跳转页面
    Intent intent = new Intent(SettingActivity.this,
      BlackNumService.class);

//当列表是勾选的状态

    if (mBlackNum_sv.getChecked()) {

//点击了复选框不勾选
     mBlackNum_sv.setChecked(false);
     mBlackNum_sv.setDes("黑名单关闭");

//关闭服务
     stopService(intent);
    } else {

//没点击,复选框勾选
     mBlackNum_sv.setChecked(true);
     mBlackNum_sv.setDes("黑名单开启");

//开启服务
     startService(intent);
    }

   }
  });

服务工具类ServiceUtil.java

/**
 * 服务工具类
 *
 */
public class ServiceUtil {
   //判断服务是否开始服务,有返回值
 public static boolean isRuningService(Context context, String className) {
 //创建Activitymanager管理者,获取系统服务
  ActivityManager activityManager=(ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
 //得到正在运行的前30个服务,类型为集合
  List runningServices = activityManager.getRunningServices(30);
 //迭代遍历,temp是RunningServiceInfo对象
  for(RunningServiceInfo temp:runningServices){
 //判断所有服务的包名是否和传过来的服务相同,若相同表示已经有这个服务开启了,若不同,表示没这个服务
   if(temp.service.getClassName().equals(className)){
  //相等返回,true值
    return true;
   }
  }
  
  
  return false;
 }

      服务工具类就创建了,你可以随意使用这工具,效果正佳,在开发中,经常使用到。所有我把经验和大家分享出来,等到开发时候,游刃有余。




你可能感兴趣的:(开发经验交流-----ServiceUtil工具类)