You are on page 1of 16

BroadcastReceiver

MultiUni
Trn V Tt Bnh

Tng quan
BroadcastReceiver (c th gi l Receiver l
mt trong bn loi thnh phn trong ng dng
Android. Chc nng dng nhn cc s kin
m cc ng dng hoc h thng pht i.
C 2 cch pht-nhn l:
Khng c th t: receiver no iu kin th
nhn ht, khng phn bit v cng tch ri nhau.
C th t: receiver no ng k u tin hn th
nhn trc, v c th truyn thm thng tin x l
cho cc receiver sau.

Lifecycle
Thc ra lifecycle ca BroadcastReceiver ch c
duy nht mt phng thc onReceive().
Khi c s kin m BroadcastReceiver ng k
nhn c pht i, th phng thc onReceive()
ca BroadcastReceiver s c gi.
Sau khi thc thi xong phng thc ny, lifercycle
ca Receiver kt thc.

Lu khi s dng
Ngay khi onReceive() kt thc, h thng coi
nh receiver khng cn hot ng v c th
kill process cha receiver ny bt c lc no.
Trnh x l cc code qu lu trong onReceive().
Khng c x l bt ng b, ch callback trong
Receiver (c th nh hin th Dialog, kt ni
service)

Mt s broadcast thng dng

Bo h thng khi ng xong


Bo pin c s thay i
Bo c package mi ci vo hoc xa i
Bo tt my
Bo cm sc, rt sc
Xem thm ti y, mc Standard Broadcast
Actions

Mt s broadcast khc

Thng bo tin nhn ti


Thng bo cm, rt th nh
Thng bo c cuc gi i
V cc bn c th nh ngha broadcast cho
ring mnh (mc tiu chnh ca vic ny gip
bn c th lin lc gia cc ng dng bn vit
hoc thng bo mt s kin lin quan n ng
dng ca bn vi cc ng dng khc)

onReceive()
Phng thc ny c gi khi c s kin
tng ng c pht i. trong phng thc
ny, ta thy truyn vo context v intent.
V Receiver khng k tha t Context nn cn
truyn context m receiver ny ang chy vo. Th
nht, c th x l cc phng thc yu cu
truyn thm Context, th 2, s dng cc
phng thc ca lp Context. (cn na hay khng th cc
bn gip mnh lun nh)

onReceive()
Intent c truyn vo s c y thng tin nh
s kin no m receiver ny ng k xy ra dn
n onReceive() c gi. C gi km thng tin g
hoc d liu g hay khng. Xem cc api:
Intent.getAction()
Intent.getExtra(String dataName)

V d BootReceiver
Cc bn c th ng k nhn s kin h thng
va khi ng xong c th lm vic g
ngay, hoc vn hnh song song vi h thng
Ta s ng k nhn s kin BOOT_COMPLETED,
sau s gi mt dialog ln hin thi li cho.
Khi h thng khi ng xong s xut mt
dialog cho user

V d BootReceiver
Trong manifest, cn ng k permission c
nhn s kin ny
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Khai bo receiver bn trong th application


<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>

V d BootReceiver
y ta khai bo trong manifest l ng dng
c mt receiver tn l BootReceiver (slide k
s thy).
BootReceiver ny ng k nhn s kin h
thng khi ng hon tt.
D nhin, mun nhn su kin dng ny th cn
phi ng k trc vi h thng qua
permission user c bit.

V d BootReceiver
To mt class mi trong source, tn l
BootReceiver k tha BroadcastReceiver.
Implement li phng thc onReceive() vi
code nh sau:
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
Intent helloIntent = new Intent(context, HelloBootActivity.class);
helloIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(helloIntent);
}

V d BootReceiver
Gii thch mt cht: v Receiver khng k tha
context nn khi to intent mi khng truyn
this v c, thay vo truyn ci context
c gi km.
V khng trong 1 activity m ang trong 1
receiver, v mt s vn lin quan ti task
trong Android nn bn phi thm c
Intent.FLAG_ACTIVITY_NEW_TASK (bn ch c
th ko dng c ny khi bn gi startActivity()
t mt activity)

V d BootReceiver
c ti y chc cc bn hiu ngay l ng dng
c mt activity tn l HelloBootActivity, activity ny
s ch hin th dng dialog, v s khng c start
bng cch bm vo icon trn mn hnh. V th,
khai bo trong manifest nh sau:
<activity android:name=".HelloBootActivity"
android:theme="@android:style/Theme.Dialog">
</activity>

Cn activity ch hin th mt ci TextView l


Cho bn, mi khi ng xong v mt ci
Button bm vo th ng activity, cc bn
hon tt nh.

Pht s kin
Cc bn c th pht mt s kin cho cc
receiver khc nhn dng nh sau:
Intent intent = new
Intent("org.multiuni.android.BROADCAST_DEMO");
sendBroadcast(intent);

Hoc:
sendOrderedBroadcast(intent, "permission ty hoc null");

Ngoi ra cn c mt s cc gi broadcast khc,


cc bn tham kho thm trong class
ContextWrapper nh

Bi tp yu cu
1. Lm ng dn BootReceiver va ri.
2. Ln g-android, tm code mu v chuyn
hng cuc gi, lm ci (cng receiver)
3. Vit 2 ng dng, ng dng A nhp vo mt
chui ri pht i mt s kin t nh ngha,
km theo chui . ng dng B nhn s kin
v hin th mt Toast c ni dung l chui
nhn c.

You might also like