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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

android Service 的使用

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android Service 的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 Service 簡介

Service 是Android 四大組件之一 一般在后臺運行,無用戶界面,用戶無法看到。

Service主要用于組件之間交互(例如:與ActivityContentProviderBroadcastReceiver進行交互)、后臺執行耗時操作等(例如下載文件,播放音樂等,但Service在主線程運行時長不能超過20s,否則會出現ANR,耗時操作一般建議在子線程中進行操作)。

2 Service 模式

Service啟動模式主要分兩種:?1.?啟動模式。?2.?綁定模式。

啟動模式的生命周期為 StartService--> onCreate---> onStartCommand-->onDestory?

綁定模式的生命周期為 BindService--->onCreate--->onBind--->onUnBind---->onDestory

3 代碼介紹Service的使用

先看下啟動服務

3.1 創建的服務要繼承Service?

3.2?必須在Androidmainfest.xml 中注冊?

下面看看代碼-----寫一個簡單的開啟與關閉服務

  //啟動服務findViewById(R.id.start).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, MyService.class);startService(intent);}});//關閉服務findViewById(R.id.close).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, MyService.class);stopService(intent);}});

然后我們在看看創建的MyService 代碼?

public class MyService extends Service {@Nullable@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();Log.e("----------服務創建","111111111111");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.e("----------服務調用","111111111111");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {super.onDestroy();Log.e("----------服務銷毀","111111111111");}
}

代碼里面有一個onBind 這個無論是啟動服務還是綁定服務都會存在的,在啟動服務里面不用關返回null就行

在綁定服務里面可以返回要綁定的內容

最后別忘記在配置文件中注冊了

   <service android:name=".MyService" />

配置文件的屬性如下

?<service android:name=".Myservice"
? ? ? ? ? ? android:enabled="true"
? ? ? ? ? ? android:exported="true"
? ? ? ? ? ? android:icon="@drawable/background_blue"
? ? ? ? ? ? android:label="string"
? ? ? ? ? ? android:process="string"
? ? ? ? ? ? android:permission="string">
?</service>
android:exported?? ?表示是否允許除了當前程序之外的其他程序訪問這個服務
android:enabled?? ?表示是否啟用這個服務
android:permission?? ?是權限聲明
android:process?? ?是否需要在單獨的進程中運行,當設置為android:process=”:remote”時,代表Service在單獨的進程中運行。注意“:”很重要,它的意思是指要在當前進程名稱前面附加上當前的包名,所以“remote”和”:remote”不是同一個意思,前者的進程名稱為:remote,而后者的進程名稱為:App-packageName:remote。
android:isolatedProcess??? ?設置 true 意味著,服務會在一個特殊的進程下運行,這個進程與系統其他進程分開且沒有自己的權限。與其通信的唯一途徑是通過服務的API(bind and start)。

綁定服務

 //綁定服務findViewById(R.id.bind).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, BindService.class);bindService(intent, conn, Service.BIND_AUTO_CREATE);}});//解綁服務findViewById(R.id.unbind).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {unbindService(conn);}});

bindService 里面有三個參數 第三個是一個標記,個人理解為綁定看下其代碼

public class MainActivity extends AppCompatActivity {private ServiceConnection conn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);conn = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {BindService.MyBinder binder = (BindService.MyBinder) service;binder.start();binder.end();}@Overridepublic void onServiceDisconnected(ComponentName name) {}};
}
}

綁定的服務

public class BindService extends Service {//初始化自定義的Binder對象private MyBinder mBinder = new MyBinder();public class MyBinder extends Binder {public void start() {Log.e("----------start", "start:");}public void end() {Log.e("-----------end", "end:");}}@Overridepublic void onCreate() {super.onCreate();Log.e("------------hxm", "onCreate");}@Nullable@Overridepublic IBinder onBind(Intent intent) {Log.e("------------hxm", "IBinder");return mBinder;}@Overridepublic boolean onUnbind(Intent intent) {Log.e("------------hxm", "onUnbind");return super.onUnbind(intent);}@Overridepublic void onDestroy() {super.onDestroy();Log.e("------------hxm", "onDestroy");}
}

個人寫一個demo 點擊查看吧
?

參考文章

https://mp.weixin.qq.com/s?__biz=MzU4MTIzMjM3MA==&mid=2247484827&idx=2&sn=80212d30ef757afccd0e601ce73f14a1&scene=21#wechat_redirect

https://blog.csdn.net/weixin_39460667/article/details/82770164

總結

以上是生活随笔為你收集整理的android Service 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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