User Notifications
Types:
- Toast
- Notification Area Notifications
Tip
To use the notification vibration, establish the permission in the AndroidManifest.xml file
<uses-permission android:name="android.permission.VIBRATE" >
</uses-permission>
Broadcast
- Base class for components that receive and react to events
- When event occur is represented as Intent, then are broadcast to system
- The Intent routes to BroadcastReceiver
- The BroadcastReceiver receive on the method onReceive()
Broadcast
- Events can be broadcast in Order or Normal way
- Normal - Undefined order and if there are two or more BroadcastReceivers can process the event at the same time.
- Order - Deliver the intent one at the time in priority order
- Can also be Sticky or Not Sticky
- Sticky
- Store intent after initial broadcast
- Is useful to record system changes like the battery status
- Is disposed after the event finish
- Non Sticky
- Discard intent after initial broadcast
- Is useful to record that an event has occurred
- The broadcaster must have the permission BROADCAST_STICKY
Broadcast Order
To send the Intent in an order can use the method sendOrderedBroadcast()
- With two parameters send in priority order (Intent intent, String receivingpermission)
- With more parameters have better control
BroadcastReceiver
- The broadcastReceiver can register in
- AndroidManifest (Statically)
- Atributes - android:exported - if can receive from other applications
- It is registered when system boot or when package are added at runtime.
- The mehods to register at runtime are:
- Context.registerReceiver()
- LocalBroadcastManager.registerReceiver()
- Using the method registerRecewiver() (Dinamically)
<receiver
android:name=".Receiver"
android:exported="false" >
<intent-filter>
<action android:name="course.examples.BroadcastReceiver.show_toast" >
</action>
</intent-filter>
</receiver>
- BroadcastReceiver
- Receive on the method onReceive() with the context and intent as parameter
- broadcast an intent is a relative expensive
- broadcast runs in the main thread
- Receiver is not consider valid once onReceive() returns
- Broadcast receivers can't start asynchronous operations
- When the method sendOrderedBroadcast is invoke, it can collect information from others broadcastReceiver with the method getResultData()
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,
"Final Result is " + getResultData(),
Toast.LENGTH_LONG).show();
}
}, null, 0, null, null);
- In each broadcastReceiver can put data with the method
setResultData(info_to_be_collected);
Debug
- Get more information in the Log using in the Intent to be broadcast
- Intent.setFlag(FLAG_DEBUG_LOG_RESOLUTION)
- Use ADB tool
- To see which receivers are registed
- Use dumpsys command
- %adb shell dumpsys activity b
- show broadcast receivers that are dynamically registered
- %adb shell dumpsys package
- show broadcast receivers that are statically registered
Comentarios
Publicar un comentario