51服务的开启方式
服務(wù)開啟方式的知識(shí)點(diǎn)見博文:http://blog.csdn.net/zengmingen/article/details/49425161
步驟:
1、新建Android項(xiàng)目名“51服務(wù)的開啟方式”
2、新建一個(gè)類 MyService,繼承?Service
3、在清單文件里配置第二步建的service
4、在Myservice類中覆寫 onBind,onUnbind,onCreate,onStartCommand,onDestroy,并在這些方法里寫上簡(jiǎn)單的syso
5、編寫activity_main.xml布局文件,簡(jiǎn)單的放置4個(gè)按鈕,按鈕設(shè)置onclick方法
6、編寫按鈕方法
API解釋:
bindService(Intent service,ServiceConnection conn, int flags)
作用:綁定服務(wù)。將參數(shù)service里的服務(wù),通過服務(wù)連接ServiceConnection?以參數(shù)flags的方式綁定服務(wù)
service:設(shè)置了要啟動(dòng)的服務(wù),本地或遠(yuǎn)程服務(wù)
conn:該類有兩個(gè)回調(diào)方法
1、public void onServiceConnected(ComponentName name, IBinder service)?
該方法在MyService類的onBind()方法返回一個(gè)IBinder 的實(shí)例的時(shí)候被調(diào)用。如果返回的null,則不被調(diào)用。
2、public void onServiceDisconnected(ComponentName name)
該方法在連接正常關(guān)閉的情況下是不會(huì)被調(diào)用的, 該方法只在Service 被破壞了或者被殺死的時(shí)候調(diào)用。例如, 系統(tǒng)資源不足, 要關(guān)閉一些Services, 剛好連接綁定的 Service 是被關(guān)閉者之一,??這個(gè)時(shí)候onServiceDisconnected() 就會(huì)被調(diào)用。
flags:一般選擇使用?BIND_AUTO_CREATE,它是Context的常量,自動(dòng)根據(jù)服務(wù)是否存在創(chuàng)建服務(wù)
代碼:
MyService.java
MainActivity.java
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.serviceway"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.serviceway.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.example.serviceway.MyService"></service></application></manifest>
運(yùn)行結(jié)果:
開啟服務(wù):
10-26 08:38:26.386: I/System.out(2072): MyService:onCreate()
10-26 08:38:26.386: I/System.out(2072): MyService:onStartCommand()
停止服務(wù):
10-26 08:39:03.076: I/System.out(2072): MyService:onDestroy()
綁定服務(wù):
10-26 08:39:21.436: I/System.out(2072): MyService:onCreate()
10-26 08:39:21.436: I/System.out(2072): MyService:onBind()
解綁服務(wù):
10-26 08:39:48.807: I/System.out(2072): MyService:onUnbind()
10-26 08:39:48.807: I/System.out(2072): MyService:onDestroy()
綁定服務(wù)---->返回鍵退出activity
10-26 08:40:34.818: I/System.out(2072): MyService:onCreate()
10-26 08:40:34.818: I/System.out(2072): MyService:onBind()
10-26 08:40:36.578: I/System.out(2072): MyService:onUnbind()
10-26 08:40:36.578: I/System.out(2072): MyService:onDestroy()
activity銷毀,服務(wù)銷毀
綁定服務(wù)---->home鍵
10-26 08:41:16.698: I/System.out(2072): MyService:onCreate()
10-26 08:41:16.698: I/System.out(2072): MyService:onBind()
activity還在,服務(wù)沒銷毀
開啟服務(wù)----->返回鍵退出activity
10-26 08:42:43.020: I/System.out(2072): MyService:onCreate()
10-26 08:42:43.020: I/System.out(2072): MyService:onStartCommand()
activity銷毀,服務(wù)不銷毀
--------------------------------------
開啟服務(wù)---->綁定服務(wù)---->停止服務(wù)
10-26 08:44:05.991: I/System.out(2072): MyService:onCreate()
10-26 08:44:06.001: I/System.out(2072): MyService:onStartCommand()
10-26 08:44:07.402: I/System.out(2072): MyService:onBind()
停止服務(wù)按鈕使勁點(diǎn),服務(wù)也沒有停止銷毀,why?
因?yàn)榻壎ǚ?wù)后,停止服務(wù)是無效的,需要使用解綁方法,解綁的時(shí)候同時(shí)銷毀服務(wù)
開啟服務(wù)---->綁定服務(wù)---->---->停止服務(wù)----->解綁服務(wù)
10-26 08:55:52.942: I/System.out(2545): MyService:onCreate()
10-26 08:55:52.942: I/System.out(2545): MyService:onStartCommand()
10-26 08:55:53.871: I/System.out(2545): MyService:onBind()
10-26 08:55:56.691: I/System.out(2545): MyService:onUnbind()
10-26 08:55:56.691: I/System.out(2545): MyService:onDestroy()
代碼下載,0積分下載
http://download.csdn.net/detail/zengmingen/9214327
總結(jié)
- 上一篇: 大华热成像netsdkdemo_千年博物
- 下一篇: html5链接mvc,LinkExten