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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

绑定服务调服务方法

發(fā)布時(shí)間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 绑定服务调服务方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Service和Activity通信

上面我們學(xué)習(xí)了Service的基本用法,啟動(dòng)Service之后,就可以在onCreate()或onStartCommand()方法里去執(zhí)行一些具體的邏輯了。不過(guò)這樣的話(huà)Service和Activity的關(guān)系并不大,只是Activity通知了Service一下:“你可以啟動(dòng)了。”然后Service就去忙自己的事情了。那么有沒(méi)有什么辦法能讓它們倆的關(guān)聯(lián)更多一些呢?比如說(shuō)在Activity中可以指定讓Service去執(zhí)行什么任務(wù)。當(dāng)然可以,只需要讓Activity和Service建立關(guān)聯(lián)就好了。

觀(guān)察MyService中的代碼,你會(huì)發(fā)現(xiàn)一直有一個(gè)onBind()方法我們都沒(méi)有使用到,這個(gè)方法其實(shí)就是用于和Activity建立關(guān)聯(lián)的,修改MyService中的代碼,如下所示:

[java]?view plaincopy
  • publicclassextends publicstaticfinal;??
  • privatenew ??
  • publicvoid super ??
  • publicintintint returnsuper ??
  • publicvoid super ??
  • public return classextends publicvoid ,? ??
  • }?
  • 接下來(lái)再修改MainActivity中的代碼,讓MainActivity和MyService之間建立關(guān)聯(lián),代碼如下所示:

    [java]?view plaincopy
  • publicclassextendsimplements private private private private private privatenew ??
  • publicvoid ??
  • publicvoid ??
  • protectedvoid super this this this this ??
  • publicvoid switch case newthisclass break case newthisclass break case newthisclass break case break default break }??
  • 可以看到,這里我們首先創(chuàng)建了一個(gè)ServiceConnection的匿名類(lèi),在里面重寫(xiě)了onServiceConnected()方法和onServiceDisconnected()方法,這兩個(gè)方法分別會(huì)在Activity與Service建立關(guān)聯(lián)和解除關(guān)聯(lián)的時(shí)候調(diào)用。在onServiceConnected()方法中,我們又通過(guò)向下轉(zhuǎn)型得到了MyBinder的實(shí)例,有了這個(gè)實(shí)例,Activity和Service之間的關(guān)系就變得非常緊密了?,F(xiàn)在我們可以在Activity中根據(jù)具體的場(chǎng)景來(lái)調(diào)用MyBinder中的任何public方法,即實(shí)現(xiàn)了Activity指揮Service干什么Service就去干什么的功能。

    當(dāng)然,現(xiàn)在Activity和Service其實(shí)還沒(méi)關(guān)聯(lián)起來(lái)了呢,這個(gè)功能是在Bind Service按鈕的點(diǎn)擊事件里完成的??梢钥吹?#xff0c;這里我們?nèi)匀皇菢?gòu)建出了一個(gè)Intent對(duì)象,然后調(diào)用bindService()方法將Activity和Service進(jìn)行綁定。bindService()方法接收三個(gè)參數(shù),第一個(gè)參數(shù)就是剛剛構(gòu)建出的Intent對(duì)象,第二個(gè)參數(shù)是前面創(chuàng)建出的ServiceConnection的實(shí)例,第三個(gè)參數(shù)是一個(gè)標(biāo)志位,這里傳入BIND_AUTO_CREATE表示在Activity和Service建立關(guān)聯(lián)后自動(dòng)創(chuàng)建Service,這會(huì)使得MyService中的onCreate()方法得到執(zhí)行,但onStartCommand()方法不會(huì)執(zhí)行。

    ?

    然后如何我們想解除Activity和Service之間的關(guān)聯(lián)怎么辦呢?調(diào)用一下unbindService()方法就可以了,這也是Unbind Service按鈕的點(diǎn)擊事件里實(shí)現(xiàn)的邏輯。

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/dubo-/p/7708014.html

    總結(jié)

    以上是生活随笔為你收集整理的绑定服务调服务方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。