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

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 15:15   14   0

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


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


//设置黑黑名单
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<RunningServiceInfo> runningServices = activityManager.getRunningServices(30);
//迭代遍历,temp是RunningServiceInfo对象
for(RunningServiceInfo temp:runningServices){
//判断所有服务的包名是否和传过来的服务相同,若相同表示已经有这个服务开启了,若不同,表示没这个服务
if(temp.service.getClassName().equals(className)){
//相等返回,true值
return true;
}
}


return false;
}

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


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP