您的位置:首页 > 其它

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

2015-09-18 23:39 281 查看
大家好,今晚给大家分享的是我在开发中经常用到的一个自定义工具类,可以说服务工具类,我们开发项目当中,有一个模块是设置模块,如下图,有个黑名单列表点击列表开启复选项,表示服务开启了,这里有个问题就是说,我是已经点击了复选框服务开启,退出页面,再次进入设置中心页面,那么黑名单复选框肯定会没勾选,服务也停止,因为你的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;

}

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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: