【Android——推断Service是否已经启动】不操千曲而后晓声,观千剑而后识器。这篇文章主要讲述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" , " 服务已经启动了!
!
" ); }
推荐阅读
- android内存泄露相关研究整体看
- 我的Android进阶之旅------&gt;Android嵌入图像InsetDrawable的使用方法
- [Android]冷门常用 ADB
- VS2017 Cordova 出现错误 @ionic/app-scripts 未安装
- Android的静默安装
- 我是如何理解Android的Handler模型_2
- 出现Android.os.NetworkOnMainThreadException 错误
- Android studio统计项目总行数
- Android基础新手教程——4.2.3 Service精通