Service的運用與activity的通訊

2021-07-23 21:56:05 字數 2012 閱讀 5939

今天突然想起有關於service這個東西的存在,然後去網上找資料來學習,之前呢,只知道這是乙個服務,這個服務是什麼,能幹什麼,分為什麼和什麼,我是都不清楚的,今天趁早還有點空閒時間,就去搜尋資料來學習學習,我找到的是郭霖大神的部落格,**是:service完全解析,不得不說郭霖對android的理解很高,我只能在他的腳底仰望,經過半天學習,也對service的運用也有了一些理解,就來分享一下,與其說是理解,不如說是怕我自己以後忘了,寫到備忘錄。

首先service是android四大元件之一,這是眾所周知的,他的功能也是十分強大的,至於強大到**,我也不甚清楚,他分為前台服務和後台服務,後台服務就是使用者看不見的,但是一直在默默做事的,前台和後台的區別就是優先順序稍微高一些,不會那麼容易被殺死,下面則開始使用。

建立乙個類,繼續service,複寫onbind()方法,這個類的作用在下面會講:

/**

* created by admin on 2016/10/21.

*/public class myservice extends service

@override

public int onstartcommand(intent intent, int flags, int startid)

@override

public void ondestroy()

@nullable

@override

public ibinder onbind(intent intent)

然後是在actiivty中註冊服務

intent intent = new intent(mainactivity.this, myservice.class);

startservice(intent);

有註冊當然也有取消:

intent intent = new intent(mainactivity.this, myservice.class);

stopservice(intent);

使用是很簡單的,當然不要忘記在清單檔案中註冊:

<

service

android

:name=

".myservice"/>

,這便是服務的使用了,很簡單的乙個東西,接下來便是與activity 的通訊了,這裡就需要用到上面複寫的方法onbind(),首先寫乙個內部類,基礎binder:

class mybinder extends binder
} 然後在myservic中:

private mybinder binder = new mybinder();

,@nullable

@override

public ibinder onbind(intent intent)

即可,接下來則是activity中的|:
private myservice.mybinder mybinder;

private serviceconnection connection = new serviceconnection()

@override

public void onservicedisconnected(componentname componentname)

};

然後是繫結:
intent intent = new intent(mainactivity.this, myservice.class);

bindservice(intent,connection,bind_auto_create);

解綁則是:

unbindservice(connection);
,如果你使用

serviceconnection ,記得要在ondestry中解綁,要不然報異常

Service與Thread的區別

不知道大家有沒有和我一樣的疑惑,在學習android service的時候,發現它和thread很像。雖然,教程中一再強調,service不是thread,但是用了好久也沒有發現他們的區別,在很多地方,都錯誤的使用thread來代替service去工作。但時間長了,發現service和thread區...

關於Service呼叫Service 的思考

以前做軟體都是隨便寫幾個service,純粹為了service而service,當某天突然發現我的兩個service竟然需要互相訪問,於是乎開始考慮如何設計service,特別是service之間的依賴關係如何設計的問題,因此偶認為軟體service層的設計應該重點放在兩個方面 一是service ...

簡單的controller方法和action方法

不同系統的controller方法和對應的action方法都不一樣,但是基本知識呼叫路徑和介面的定義方法有區別,方法中的編寫是一樣的,post和get定義,介面引數的定義,路徑的編寫和註解的使用 1.controller post restcontroller public class storec...