从Service类继承一个子类:
- package tommy.myandroid;
- import android.app.IntentService;
- import android.content.Intent;
- public class UglyService extends IntentService {
- public UglyService(String name) {
- super(name);
- }
- @Override
- public void onHandleIntent(Intent intent) {
- for (int i = 0; i < 10; ++i) {
- // do something
- }
- }
- }
IntentService是Service的子类,在服务开始后,它会新建一个worker线程,这个线程会调用onHandleIntent方法。如果你直接从Service继承,可以override它的OnStartCommand方法,在此方法中开一个线程达到同样的效果。
记得在manifest里注册该service:
- <service android:name=".UglyService" android:label="Ugly Service">
- <intent-filter>
- <action android:name="anyone.anything.ugly" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- </service>
这样一个新的Service就建好了。只要调用startService(Intent)方法就能开始一个service了。
broadcast receiver也类似:
- package tommy.myandroid;
- import android.app.Notification;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- public class HappyReceiver extends BroadcastReceiver {
- static int id;
- @Override
- public void onReceive(Context context, Intent intent) {
- NotificationManager nm =
- (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
- Notification n = new Notification(R.drawable.icon, "Notice!!", System.currentTimeMillis());
- n.setLatestEventInfo(context, "Title", "Content text",
- PendingIntent.getActivity(context, 0, new Intent("anyone.anything.beauty"), 0));
- nm.notify(id++, n);
- }
- }
manifest:
- <receiver android:name=".HappyReceiver" android:label="Happy Receiver">
- <intent-filter>
- <action android:name="anyone.anything.happy" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- </receiver>
NotificationManager用来发送一个通知,比如新短信消息。Notification对象包含了一些有用的信息比如消息内容和消息时间。注意到这样一行语句:PendingIntent.getActivity(.....),它返回一个(Action为“beauty”的)PendingIntent实例,它的作用是用户查看消息详情时可以通过这个PendingIntent来启动相应的activity(BeautyActivity)。为什么要PendingIntent而不是直接使用Intent?因为创建创建Intent的程序退出后,它所拥有的Intent也会失效。由于执行这个activity的时间并不确定,为防止Intent失效,所以使用PendingIntent。
阅读(1293) | 评论(0) | 转发(0) |