亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

說說在Android如何使用服務(Service)的方法

2019-10-21 21:49:50
字體:
來源:轉載
供稿:網友

Android 服務(Service)適合執行那些不需要和用戶交互而且還要求長期運行的任務。

服務的運行不依賴于任何用戶界面,即使 APP 被切換到后臺,或者打開了另外一個 APP,服務仍然能夠保持正常運行。

但是當某個 APP 進程被殺掉時,那么這個 APP 所創建的所有服務也就停止咯。

另外,服務本身并不會自動開啟線程,服務代碼默認是運行在主線程中的。所以如果需要執行的業務邏輯耗時長,那么為了防止主線程被阻塞,我們必須在服務內部創建子線程來執行這些業務邏輯。

1 定義服務

在 Android Studio 中可以通過 File→New→Service→Service 來創建服務:

Android,服務,Service

在彈出的對話框中配置服務:

Android,服務,Service

在此配置服務名。下面兩個配置項說明如下:

* Exported:是否允許除了當前程序之外的其他程序訪問這個服務。(默認勾選)

* Enabled:是否啟用這個服務 。 (默認勾選)

public class FirstService extends Service { private static final String TAG = "FirstService"; @Override public void onCreate() {  super.onCreate();  Log.d(TAG, "onCreate"); } @Override public int onStartCommand(Intent intent, int flags, int startId) {  Log.d(TAG, "onStartCommand");  return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() {  super.onDestroy();  Log.d(TAG, "onDestroy"); } public FirstService() { } @Override public IBinder onBind(Intent intent) {  // TODO: Return the communication channel to the service.  throw new UnsupportedOperationException("Not yet implemented"); }}

創建好后的服務繼承自 Service,并且需要實現 onBind() 方法。我們在此還重寫了以下幾個方法:

 

方法 說明
void onCreate() 服務創建時調用該方法。
onStartCommand(Intent intent, int flags, int startId) 每次服務啟動時調用該方法。
void onDestroy() 服務銷毀時調用該方法。

 

我們還在這些方法中加入了日志,便于觀察運行結果。

此外,在此類的任何位置調用 stopSelf() 方法,服務就會自行停止。

定義好服務后,需要在 AndroidManifest.xml 中注冊服務(如果用的是 Android Studio,那么這一步它已經幫我們做啦):

<service android:name=".FirstService" android:enabled="true" android:exported="true"></service>

2 啟動或停止服務

借助 Intent,我們就可以控制服務的啟動與停止啦O(∩_∩)O哈哈~

final Context context = this;findViewById(R.id.start_service).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {  //啟動服務  startService(new Intent(context, FirstService.class)); }});findViewById(R.id.stop_service).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {  //停止服務  stopService(new Intent(context, FirstService.class)); }});

這里的 startService() 和 stopService() 方法都是定義在 Context 類中,所以在活動類中可以直接調用。

執行結果:

D/FirstService: onCreate   D/FirstService: onStartCommand D/FirstService: onDestroy

**注意:**onCreate() 在第一次創建服務時被調用,而 onStartCommand() 會在每次啟動服務時被調用。

服務啟動后,可以在 Android 的 Settings → Developer opinions → Running services 中發現它:

Android,服務,Service

點擊 APP 后,可以看到服務詳情:

Android,服務,Service

如果找不到 Developer opinions 選項,請先在 Android 的 Settings → About emulated device → 多次點擊 Build number 就可以開啟開發者模式啦:

Android,服務,Service

3 活動控制服務

活動是通過實現 ServiceConnection 接口來與服務建立連接的,它包含以下兩個方法:

 

方法 說明
onServiceConnected(ComponentName name, IBinder service) 服務綁定后調用該方法。
onServiceDisconnected(ComponentName name) 服務解綁后調用該方法。

 

而服務是通過實現 IBinder onBind(Intent intent) 方法來轉換為 onServiceConnected() 方法所需要的 IBinder 型的 service 參數的。

首先,我們修改服務類:

public class FirstService extends Service { class CustomBinder extends Binder {  public void init(){   Log.d(TAG, "init CustomBinder");  } } @Override public IBinder onBind(Intent intent) {  return new CustomBinder(); }}

這里,我們定義了一個內部類 CustomBinder,里面實現了一個簡單的初始化方法。然后在 onBind() 方法中返回它的實例。

接著,我們修改活動類,創建 ServiceConnection 實例:

private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) {  Log.d(TAG, "onServiceConnected");  FirstService.CustomBinder customBinder = (FirstService.CustomBinder) service;  customBinder.init(); } @Override public void onServiceDisconnected(ComponentName name) {  Log.d(TAG, "onServiceDisconnected"); }};

現在,就可以通過 ServiceConnection 實例來綁定或者解綁服務啦。

綁定服務:

 

復制代碼代碼如下:
bindService(new Intent(context, FirstService.class), connection, BIND_AUTO_CREATE);

 

bindService 接收三個參數:

 

參數 類型 說明
service Intent 這個 Intent 將綁定當前的活動類與服務類。
conn ServiceConnection ServiceConnection 對象。
flags int 綁定服務的方式。這里的 BIND_AUTO_CREATE 表示綁定后自動創建服務。

 

【綁定服務】輸出結果:

D/FirstService: onCreate D/MainActivity: onServiceConnected D/FirstService: init CustomBinder

解綁服務:

unbindService(connection);

只要傳入 ServiceConnection 對象即可解綁,是不是很簡單呀 O(∩_∩)O哈哈~

【解綁服務】輸出結果:

D/FirstService: onDestroy

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品欧美一区二区三区奶水| 久久99久久99精品免观看粉嫩| 97**国产露脸精品国产| 欧美俄罗斯性视频| 自拍视频国产精品| 久久久视频在线| 日韩精品免费综合视频在线播放| 日韩在线中文字幕| 欧美高清性猛交| 久久久久久久久久久91| 亚洲午夜久久久久久久| 欧美在线激情网| 国产精品成人播放| 久久精品视频导航| 久久精品夜夜夜夜夜久久| 精品久久久久久国产| 国语自产精品视频在线看抢先版图片| 久久精品福利视频| 亚洲美女自拍视频| 亚洲a在线播放| 国产欧美va欧美va香蕉在| 久久精品最新地址| 色av中文字幕一区| 欧美在线欧美在线| 国产精品电影久久久久电影网| 久青草国产97香蕉在线视频| 中文字幕亚洲无线码在线一区| 欧美麻豆久久久久久中文| 欧美色视频日本高清在线观看| 欧美寡妇偷汉性猛交| 欧美成人免费观看| 成人国产在线激情| 亚洲三级 欧美三级| 中文字幕亚洲一区二区三区五十路| 欧美日本中文字幕| 亚洲欧美一区二区三区久久| 欧美日韩国产影院| 欧美日韩激情视频8区| 欧美高清在线视频观看不卡| 欧美午夜丰满在线18影院| 色婷婷**av毛片一区| 国产视频精品免费播放| 久久国产精品久久久| 久久久久久久久久国产精品| 亚洲午夜未满十八勿入免费观看全集| 亚洲精品久久久久国产| 国产精品久久久久久久久男| 日韩经典中文字幕在线观看| 国产成人精品久久二区二区| 亚洲综合av影视| 在线观看中文字幕亚洲| 亚洲xxxx妇黄裸体| 亚洲精品久久7777777| 欧美久久精品午夜青青大伊人| 黑人精品xxx一区一二区| 成人精品一区二区三区电影黑人| 最新69国产成人精品视频免费| 久久99久国产精品黄毛片入口| 久久视频中文字幕| 亚洲免费影视第一页| 91精品在线国产| 国产精品成人va在线观看| 亚洲在线观看视频网站| 清纯唯美亚洲激情| 欧美日韩国产丝袜美女| 国产成人精品免高潮费视频| 性欧美亚洲xxxx乳在线观看| 91欧美日韩一区| 日韩在线免费观看视频| 精品av在线播放| 亚洲日本aⅴ片在线观看香蕉| 黄网站色欧美视频| 日韩精品在线观看视频| 日韩精品免费在线视频观看| 亚洲精品视频网上网址在线观看| 欧美日韩一区二区精品| 麻豆国产精品va在线观看不卡| 性金发美女69hd大尺寸| 欧美国产在线电影| 色综合天天狠天天透天天伊人| 国产精品亚洲视频在线观看| 美女999久久久精品视频| 欧洲美女免费图片一区| 成人精品一区二区三区电影黑人| 国产中文字幕亚洲| 国产精品美女视频网站| 精品中文字幕视频| 欧美日韩国产精品一区| 国产91精品久久久久久| 亚洲天堂男人天堂女人天堂| 欧美性猛交xxxx乱大交蜜桃| 国产精品专区第二| 在线视频一区二区| 欧美激情乱人伦一区| 国产97在线视频| 亚洲老板91色精品久久| 日韩av电影中文字幕| 亚洲第一区在线观看| 中文字幕精品网| 中文字幕久热精品在线视频| 国产精品久久久久久久久粉嫩av| 亚洲精品suv精品一区二区| 麻豆国产精品va在线观看不卡| 欧美性生活大片免费观看网址| 欧美成人一二三| 91精品国产99| 成人国产精品免费视频| 91精品视频免费看| 欧美老女人在线视频| 国产精品综合久久久| 亚洲三级免费看| 欧美亚洲一区在线| 色视频www在线播放国产成人| 欧美高清自拍一区| 国产成+人+综合+亚洲欧美丁香花| 久久久久久久久久婷婷| 久久国产精品久久久| 国产精品伦子伦免费视频| 97国产在线观看| 亚洲天堂av在线播放| 午夜剧场成人观在线视频免费观看| 在线看片第一页欧美| 成人网在线观看| 日韩精品免费综合视频在线播放| 久久久久久久久久av| 亚洲欧美999| 亚洲二区中文字幕| 国产精品视频yy9099| 亚洲一区亚洲二区亚洲三区| 少妇高潮 亚洲精品| 中文字幕一区二区三区电影| 亚洲精品日韩激情在线电影| 欧美日韩国产成人高清视频| 国外日韩电影在线观看| 久久天天躁狠狠躁老女人| 伊人久久精品视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 成人久久一区二区| 国产日韩在线看| 亚洲国产精品999| 亚洲天堂免费在线| 国产精品第七影院| 亚洲天堂第二页| 国产亚洲欧美aaaa| 精品中文字幕久久久久久| 红桃av永久久久| 国产精品网址在线| 亚洲第一中文字幕| 久久精品视频导航| 成人h片在线播放免费网站| 高清欧美电影在线| 亚洲天堂免费观看| 久久精品2019中文字幕| 久久免费视频观看| 亚洲人成网7777777国产| 97视频在线观看网址| 91精品国产免费久久久久久| 国产精品久久久久久久久久久不卡| 亚洲free性xxxx护士hd| 欧洲精品在线视频| 一区二区三区亚洲| 九九九久久国产免费| 午夜精品www| 精品国内产的精品视频在线观看|