zoukankan      html  css  js  c++  java
  • Android——推断Service是否已经启动

              延续百度地图定位的Demo。採用Service来进行百度定位,并且将数据上传到server上遇到了一个问题:在真机中使用清理内存来关闭程序的之后,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");
    					// 启动Service
    					startService(intent);
    				}
    				else{
    					Log.i("info", "服务已经启动了!

    "); }






  • 相关阅读:
    angularJS 数组更新时重新排序之解决方案一:这个坑,绕开吧,不跳了……
    移动web开发之rem响应式设计
    IIS wAS机制
    触摸方法
    滑动加载函数
    js有关数组的函数
    用absolute进行页面的自适应布局
    absolute
    清除float的方法
    图片和文字的位置垂直居中和左右摆放
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7090523.html
Copyright © 2011-2022 走看看