廣播與服務 2

2022-08-19 06:24:09 字數 2923 閱讀 5537

1.start開啟服務的生命週期(重點)

startservice方法開啟服務,stopservice停止服務;

* 服務的特點:     

服務被建立時呼叫oncreate、onstartcommand;      

服務只能被建立一次,可以開啟多次onstartcommand;      

服務只能被停止一次;   沒有onpause、onstop、onresume、onrestart方法,因為service沒有介面,長期執行在後台。

* 生命週期的方法:       

oncreate:服務被建立的時候呼叫這個方法;   

onstartcommand :開啟服務     

ondestroy:銷毀服務

2.bind方式開啟服務的生命週期(重點)

bindservice繫結服務:oncreate、onbind方法;  

unbindservice解除繫結:onunbind、ondestroy方法;

特點:    

1.服務第一次被繫結的時候,會建立服務物件,呼叫oncreate初始化服務,呼叫onbind方法繫結服務;    

2.服務只能被幫定一次;    

3.服務只能被解除繫結一次,多次解除繫結會丟擲異常;    

生命週期:    

oncreate:初始化;  

onbind:繫結服務;  

onunbind:解除繫結;  

ondestroy銷毀服務;  

3.為什麼要引入bindservice的api?  

目的:無論是startservice還是bindservice都不能得到乙個服務物件,而且直接建立乙個服務物件,都不能直接呼叫服務的業務邏輯方法。

解決辦法:在服務類裡面建立乙個中間人物件,當服務繫結成功時使用onbind方法返回乙個中間人物件,  在activity裡面得到中間人物件,然後讓中間人呼叫服務的業務邏輯方法,從而達到間接呼叫服務業務邏輯方法的目的。  

4.繫結服務呼叫服務方法的過程  

步驟:    

1.在服務類裡面建立乙個中間人,中間人裡面寫乙個方法,讓它呼叫服務的業務邏輯方法;    

2.在activity中繫結服務成功後返回乙個中間人物件;    

3.在activity中呼叫中間人的方法;   

**:1、在服務類裡面建立乙個中間人,中間人裡面寫乙個方法,讓它呼叫服務的業務邏輯方法

package com.qaa.bindservice;

import android.content.intent;  

import android.os.binder;  

import android.os.ibinder;  

import android.widget.toast;    

public class testservice extends service      

* 中間人,是ibinder型別的   

* @author administrator   

public class mybinder extends binder      

@override   

public void oncreate()      

@override   

public void ondestroy()

3.在activity中呼叫中間人的方法;

public void call(view view)     

public void set(view view) {      

animationset set = new animationset(false);      

alphaanimation aa = new alphaanimation(0, 1.0f);    

aa.setduration(3000);    

aa.setrepeatcount(2);    

aa.setrepeatmode(rotateanimation.reverse);      

set.addanimation(aa);      

rotateanimation ra = new rotateanimation(0, 360, rotateanimation.relative_to_self, 0.5f, rotateanimation.relative_to_self, 0.5f);    

ra.setduration(3000);    

ra.setrepeatcount(2);    

ra.setrepeatmode(rotateanimation.reverse);    

set.addanimation(ra);      

scaleanimation sa = new scaleanimation(0, 2.0f, 0, 2.0f, scaleanimation.relative_to_parent, 0.5f, scaleanimation.relative_to_parent, 0.5f);    

sa.setduration(3000);    

sa.setrepeatcount(2);    

sa.setrepeatmode(scaleanimation.reverse);      

set.addanimation(sa);      

translateanimation ta = new translateanimation(0, 200, 0, 200);    

ta.setduration(3000);    

ta.setrepeatcount(2);    

ta.setrepeatmode(translateanimation.reverse);      

set.addanimation(ta);      

iv.startanimation(set);     

20 廣播與服務

1 廣播 掌握 2 廣播接收者 掌握 在android中,broadcast是一種廣泛運用的在應用程式之間傳輸資訊的機制。而broadcastreceiver是對傳送出來的broadcast進行過濾接受並響應的一類元件。廣播接收者 broadcastreceiver 用於接收廣播intent的,廣播...

廣播與廣播接受者簡述

廣播訊息是android中的用來進行通知的訊息。便於進行系統級別的訊息通知或者自定義的訊息通知。傳送廣播後,註冊該廣播的廣播接收器 broadcast receiver 就可以接收該廣播,然後進行對應的業務操作。廣播可以分為系統級廣播 如手機開機,電池電量發生變化等 和程式內自定義廣播。傳送一條廣播...

adb 啟動服務,傳送廣播

進入adb shell am help am startservice n com.topsec.engine com.topsec.engine.engineservice 參考資料 am broadcast a 廣播動作 am start n 包 package 名 包名.活動 activity...