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