Android中怎么启动关闭Service及功能解释
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中怎么启动关闭Service及功能解释相关的知识,希望对你有一定的参考价值。
调用startService就是启动service,调用stopService就是关闭service。android中Service是运行在后台的东西,级别与activity差不多。既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。可以启动一个服务Service来播放音乐,或者记录地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。
服务一般分为两种:
1:本地服务, Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。
2:远程服务, Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。 参考技术A 你指的是从用户角度关闭还是从开发者角度关闭
用户角度的话,直接打开任务管理器,然后再“运行”里找到这个服务,点停止。
开发者角度的话,在用context调用stopService去关闭,参数传递一个指向这个service的intent就OK了本回答被提问者和网友采纳
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中怎么启动关闭Service及功能解释的主要内容,如果未能解决你的问题,请参考以下文章
android中启动service的activity销毁了,这时怎么关闭service?