日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51服务的开启方式

發布時間:2025/3/11 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51服务的开启方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

服務開啟方式的知識點見博文:http://blog.csdn.net/zengmingen/article/details/49425161


步驟:

1、新建Android項目名“51服務的開啟方式”

2、新建一個類 MyService,繼承?Service

3、在清單文件里配置第二步建的service

4、在Myservice類中覆寫 onBind,onUnbind,onCreate,onStartCommand,onDestroy,并在這些方法里寫上簡單的syso

5、編寫activity_main.xml布局文件,簡單的放置4個按鈕,按鈕設置onclick方法

6、編寫按鈕方法


API解釋:

bindService(Intent service,ServiceConnection conn, int flags)

作用:綁定服務。將參數service里的服務,通過服務連接ServiceConnection?以參數flags的方式綁定服務

service:設置了要啟動的服務,本地或遠程服務

conn:該類有兩個回調方法

1、public void onServiceConnected(ComponentName name, IBinder service)?

該方法在MyService類的onBind()方法返回一個IBinder 的實例的時候被調用。如果返回的null,則不被調用。

2、public void onServiceDisconnected(ComponentName name)

該方法在連接正常關閉的情況下是不會被調用的, 該方法只在Service 被破壞了或者被殺死的時候調用。例如, 系統資源不足, 要關閉一些Services, 剛好連接綁定的 Service 是被關閉者之一,??這個時候onServiceDisconnected() 就會被調用。

flags:一般選擇使用?BIND_AUTO_CREATE,它是Context的常量,自動根據服務是否存在創建服務


代碼:


MyService.java

package com.example.serviceway;import android.app.Service; import android.content.Intent; import android.os.IBinder;public class MyService extends Service {@Overridepublic IBinder onBind(Intent intent) {System.out.println("MyService:onBind()");return null;}@Overridepublic boolean onUnbind(Intent intent) {System.out.println("MyService:onUnbind()");return super.onUnbind(intent);}@Overridepublic void onCreate() {System.out.println("MyService:onCreate()");super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {System.out.println("MyService:onStartCommand()");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {System.out.println("MyService:onDestroy()");super.onDestroy();}}


MainActivity.java

package com.example.serviceway;import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.view.View;public class MainActivity extends Activity {private Intent intent;private ServiceConnection conn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intent=new Intent();intent.setClass(this, MyService.class);conn=new MyServiceConnection();}public void startService(View v){startService(intent);}public void stopService(View v){stopService(intent);}public void bindService(View v){//BIND_AUTO_CREATE 是上下文里的常量,如果服務不存在,則自動創建bindService(intent, conn, BIND_AUTO_CREATE);}public void unBindService(View v){unbindService(conn);}class MyServiceConnection implements ServiceConnection{@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {//服務連接成功時,該方法調用System.out.println("MyServiceConnection:服務連接了!");}@Overridepublic void onServiceDisconnected(ComponentName name) {//服務失去連接時,該方法調用System.out.println("MyServiceConnection:服務連接斷開了!");}}}
<?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>


運行結果:


開啟服務:

10-26 08:38:26.386: I/System.out(2072): MyService:onCreate()
10-26 08:38:26.386: I/System.out(2072): MyService:onStartCommand()

停止服務:

10-26 08:39:03.076: I/System.out(2072): MyService:onDestroy()

綁定服務:

10-26 08:39:21.436: I/System.out(2072): MyService:onCreate()
10-26 08:39:21.436: I/System.out(2072): MyService:onBind()

解綁服務:

10-26 08:39:48.807: I/System.out(2072): MyService:onUnbind()
10-26 08:39:48.807: I/System.out(2072): MyService:onDestroy()

綁定服務---->返回鍵退出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銷毀,服務銷毀

綁定服務---->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還在,服務沒銷毀

開啟服務----->返回鍵退出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銷毀,服務不銷毀

--------------------------------------

開啟服務---->綁定服務---->停止服務

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()

停止服務按鈕使勁點,服務也沒有停止銷毀,why?

因為綁定服務后,停止服務是無效的,需要使用解綁方法,解綁的時候同時銷毀服務

開啟服務---->綁定服務---->---->停止服務----->解綁服務

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


總結

以上是生活随笔為你收集整理的51服务的开启方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。