Android——判断Service是否已经启动

来源:互联网 发布:淘宝在线自由布局工具 编辑:程序博客网 时间:2024/05/19 06:47

          延续百度地图定位的Demo,采用Service来进行百度定位,并且将数据上传到服务器上遇到了一个问题:在真机中使用清理内存来关闭程序的之后,Service会被关闭,但是过几秒中,它又会自动重启;重启就算了,而且再次登陆系统的时候,又会开启一个一样的服务,在LogCat中就会看到每次都获取到两次的定位数据。然后想想是否可以在建立Service之前判断这个服务有没有被创建?只要能做这个判断,那么服务存在我们就不管它,如果不存在则创建,本着这个思路,百度发现可行(Service后台服务创建时最好都要判断是否存在),代码如下:


private boolean isWorked(String className) {ActivityManager myManager = (ActivityManager) LoginActivity.this.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);ArrayList<RunningServiceInfo> runningService = (ArrayList<RunningServiceInfo>) myManager.getRunningServices(30);for (int i = 0; i < runningService.size(); i++) {if (runningService.get(i).service.getClassName().toString().equals(className)) {return true;}}return false;}

判断过程:

if(!this.isWorked("包.服务名")){Intent intent = new Intent();intent.setAction("该服务组件的intent-filter的action");// 启动ServicestartService(intent);}else{Log.i("info", "服务已经启动了!!");}





0 0
原创粉丝点击