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", "服务已经启动了!

!

");
				}
时间: 2024-08-29 08:54:28

Android——推断Service是否已经启动的相关文章

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

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

Android中Service通信(一)——启动Service并传递数据

启动Service并传递数据的小实例(通过外界与服务进行通信): 1.activity_main.xml: <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:text="默认信息" android:id="@+id/etData"/> <Button android:text=&

Android之Service的细枝末节

转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/53675312 1. 简介 与前一篇Android之Activity的细枝末节是同一系列的文章,是自己在学习和研发过程中,对Service的一些知识点的总结,汇总得到这篇文章. 这篇文章会从Service的一些小知识点,延伸到Android中几种常用进程间通信方法. 2. 进程 Service是一种不提供用户交互页面但是可以在后台长时间运行的组件,可以通过在AndroidManifes

Android Studio开发基础之启动Service,并通过从Activity向Service传递数据

本实例演示启动Service,并通过从Activity向Service传递数据,新建一个Service,并敲如下代码: package com.example.lhb.startservice; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.view.ViewDebug; import android.widget.Toast; public

Android service介绍和启动方式

1.Android service的作用: service通常是用来处理一些耗时操作,或后台执行不提供用户交互界面的操作,例如:下载.播放音乐. 2.Android service的生命周期: service生命周期没有activity生命周期那么复杂,它只有onCreate().onStart().onDestroy()三个方法,当第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是

android Service简介及启动关闭方式

(1)Service是Android系统中的四大组件之一,和Activity是同一层次的组件:它是一种生命周期较长,没有可视化界面,运行于后台的一种服务:例如,我们听音乐可以使用Service,下载东西可以使用Service,我们还可以用它来记录我们所在地理位置的改变,或者启动一个服务来一直监听某种动作:我们还可以使用Service更新Content Provider,发送Intent以及启动系统的通知等: (2)Service生命周期不太复杂,它只继承了onCreate(),onStartCo

Android 中的 Service 三种启动方式

1.start Service    不会随着activity finish 而关闭,必须调用 stop方法 每次调用都会调用onstart方法 package com.weidingqiang.customnetroid; import android.app.Service; import android.content.Intent; import android.os.Bundle; import android.os.IBinder; import android.util.Log;

Android 后台每10秒钟启动一次应用的demo,一次启动,永不退出

android整理 原文链接 创建一个Service: 最关键的是onStartCommand 里面返回的Service.START_STICKY, package com.qywanwei.servicetest2; import android.app.Notification; import android.app.PendingIntent; import android.app.Service; import android.content.Intent; import android

android的Service的实例

package com.android.service; import android.app.IntentService;import android.content.Intent; public class HelloIntentService extends IntentService{ public HelloIntentService() {        super("HelloIntentService");        // TODO Auto-generated c