导航:首页 > 操作系统 > android启动service的方法

android启动service的方法

发布时间:2025-01-05 07:00:45

1. android中怎么启动关闭Service及功能解释

1、 Service不是分离开的进程,除非其他特殊情况,它不会运行在自己的进程,而是作为启动运行它的进程的一部分。
2、 Service不是线程,这意味着它将在主线程里劳作。
启动service有两种方法:
1、 Context.startService()
调用者与服务之间没有关联,即使调用者退出,服务仍可运行
2、 Context.bindService()
调用者与服务绑定在一起,调用者一旦退出,服务也就终止
Service的生命周期
如果使用startService()启动service,系统将通过传入的Intent在底层搜索相关符合Intent里面信息的service。如果服务没有启动则先运行onCreate,然后运行onStartCommand (可在里面处理启动时传过来的Intent和其他参数),直到明显调用stopService或者stopSelf才将停止Service。无论运行startService多少次,只要调用一次stopService或者stopSelf,Service都会停止。使用stopSelf(int)方法可以保证在处理好intent后再停止。
控制service运行的主要方式有两种,主要是根据onStartCommand方法返回的数值。方法:
1、START_STICKY
2、START_NOT_STICKY or START_REDELIVER_INTENT
这里主要解释这三个变量的意义:
1、 START_STICKY
在运行onStartCommand后service进程被kill后,那将保留在开始状态,但是不保留那些传入的intent。不久后service就会再次尝试重新创建,因为保留在开始状态,在创建 service后将保证调用onstartCommand。如果没有传递任何开始命令给service,那将获取到null的intent
2、 START_NOT_STICKY
在运行onStartCommand后service进程被kill后,并且没有新的intent传递给它。Service将移出开始状态,并且直到新的明显的方法(startService)调用才重新创建。因为如果没有传递任何未决定的intent那么service是不会启动,也就是期间onstartCommand不会接收到任何null的intent。

2. Android 开机自启动service实践

Android 设备启动的时候,会发送android.intent.action.BOOT_COMPLETED的广播,监听这个广播来实现开机自启动。

1) 创建需要的service和 BroadcastReceiver
2) 在AndroidManifest.xml 注册service 和BroadcastReceiver

3)申明权限
```
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

}

3. android 启动service的两种方式有什么不同

Service的生命周期Service的生命周期方法比Activity少一
些,只有onCreate,onStart,onDestroy
我们有两种方式启动一个Service,他们对Service生命周期
的影响是不一样的。
1;通过startService:
Service会经历onCreate->onStart,
stopService的时候直接onDestroy如果是调用者(TestServiceHolder)自己直接退出而没有调用stopService的话,Service会一直在后台运行。下次TestServiceHolder再起来可以stopService。
2:通过bindService:
Service只会运行onCreate,这个时候TestServiceHolder和TestService绑定在一起
TestServiceHolder退出了,Srevice就会调用onUnbind->onDestroyed所谓绑定在一起就共存亡了。
那有同学问了,要是这几个方法交织在一起的话,会出现什么情况呢?
一个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的
startService又bindService,Service只被创建一次。如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就
stop不掉了,对啊,就是stopService不好使了,只能先UnbindService,再StopService,
所以是先start还是先bind行为是有区别的。

阅读全文

与android启动service的方法相关的资料

热点内容
androidlistview按下颜色 浏览:194
单片机实验报告蜂鸣器 浏览:10
农业量地用什么app 浏览:11
python构造时间 浏览:843
页面加密不能复制 浏览:680
什么app可以看美剧无删美剧 浏览:845
mom解压包下载 浏览:270
什么手机app可以学习数学 浏览:496
pdf文档制作 浏览:781
修改文件夹显示电影图标 浏览:133
王者荣耀视频app叫什么 浏览:900
php判断ip段 浏览:978
gmail服务器怎么收到邮件 浏览:297
sha弱加密算法 浏览:666
预编译error指令 浏览:304
小米控制电视的app叫什么 浏览:351
python中break的用法 浏览:508
安居家园app怎么设备绑定 浏览:91
程序员招聘数量城市 浏览:801
程序员反击代码 浏览:255