四個手動呼叫的方法
手動呼叫的方法
作用startservice( )
啟動服務
stopservice( )
關閉服務
bindservice( )
繫結服務
unbindservice( )
解綁服務
五個內部自動呼叫的方法
內部自動呼叫的方法
作用oncreat( )
建立服務
onstartcommand( )
開始服務
ondestory( )
銷毀服務
onbind( )
繫結服務
onunbind( )
解綁服務
其中:1. oncreat( )和onstartcommand( )的區別:oncreat( )方法實在服務的第一次建立的時候呼叫,而onstartcommand( )方法則再每次啟動服務的時候均會呼叫。但是每個服務只會存在乙個例項。
2. 服務啟動了之後會一直保持執行狀態,直到stopservice( )或者stopself( )方法被呼叫。
3. 當呼叫了startservice( )之後再去呼叫stopservice( ),這是服務中的ondestory( )方法將會被呼叫,表示服務已經被銷毀。同理bindservice( )方法和unbindservice( )方法類似,但是如果其即呼叫了startservice( )方法有呼叫了bindservice( )方法,那麼該服務必須滿足stopservice( )和unbindservice( )兩種條件ondestory( )方法才被執行。
如果自定義乙個myservice來繼承service的話,可以看到onbind( )方法是service中唯一的乙個抽象方法:
public class myservice extends service
}
在重寫服務時,一般我們會重寫四個方法:
1)oncreate():建立服務時呼叫以上是簡單的重寫乙個服務而已,如果想要獲取到服務中的資訊,需要使用bindservice(),此方法的構造方法如下所示:2)onstartcommand():每次啟動服務時都會呼叫此方法
3)ondestroy():服務銷毀的時候呼叫
4)onbind():服務的唯一抽象方法,子類中必須實現的方法
public boolean bindservice(intent service, serviceconnection conn,
int flags)
下面是繫結服務時乙個簡單的例子:
public class myservice extends service
private downloadbinder downloadbinder = new downloadbinder();
class downloadbinder extends binder
public int getprogress()
}@override
public void oncreate()
@override
public int onstartcommand(intent intent, int flags, int startid)
@override
public void ondestroy()
@override
public ibinder onbind(intent intent)
}
在主程式中繫結此服務:
private serviceconnection connection = new serviceconnection()
@override
public void onservicedisconnected(componentname name)
};//繫結此服務,並且繫結後自動建立
intent intent = new intent(mainactivity.this, myservice.class);
bindservice(intent, connection, bind_auto_create);
//取消繫結此服務
unbindservice(connection);
可以看到當我們在主程式中對服務進行繫結之後,便可以通過此方法獲取到服務中的進度之類的資訊。需要注意的是,任何乙個服務,不僅可以在主程式中進行繫結,在應用程式的任何活動之內,都可以對其進行繫結操作。
但是需要注意的是,服務啟動了之後就會一直保持執行狀態,知道我們呼叫了stopservice()或者stopself()方法,雖然每次呼叫都會執行一次startcommand()但是,每個服務僅僅存在乙個例項,無論呼叫多少次的startcommand()方法,只需要呼叫一次stopservice()或者stopself()方法即可。
3.使用intentservice
上面的服務之類的操作都是在主線程中進行,如果處理一些耗時的操作則容易出現anr,因此使用intentservice,即在服務中開啟乙個子執行緒來進行一些耗時的操作。
但是intentservice是使用工作執行緒對所有的請求進行逐一處理,只需要實現onhandintent即可。
Service學習筆記 一
學習service的,必須提到service的兩種啟動方式,下面附上生命週期。通過startservice啟動後,service會一直無限期執行下去,只有外部呼叫了stopservice 或stopself 方法時,該service才會停止執行並銷毀。bindservice啟動服務特點 1.bind...
Android學習筆記九 Service
一 service是什麼 二 service的生命週期方法 在定義service子類時,需要重寫以下方法 內部自動呼叫的方法 作用oncreat 建立服務 onstartcommand 開始服務 ondestroy 銷毀服務 onbind 繫結服務 onunbind 解綁服務 在其他地方,建立服務 ...
Android學習筆記 Service初步
1 service是什麼 是乙個應用程式元件 沒有圖形化介面 通常處理一些耗時較長的操作 可以是使用service更新contnetprovider.傳送intnet以及啟動系統的通知等等 2 service不是什麼 不是乙個單獨的程序 不是乙個執行緒 3 service生命週期 4 啟動和停止se...