WEB开发网
开发学院手机开发Android 开发 Android 下实现程序关闭后监听取消 阅读

Android 下实现程序关闭后监听取消

 2010-03-04 05:15:00 来源:WEB开发网   
核心提示:在先前的文章中,接收短信的监听器会一直活在后台,Android 下实现程序关闭后监听取消,哪怕程序被关闭,监听器会一直存在并在收到消息时激活主程序,终止时不再转发消息,后台的BroadcastReceiver也因此不再生效,在一般的设计中,都不会这么做

在先前的文章中,接收短信的监听器会一直活在后台,哪怕程序被关闭,监听器会一直存在并在收到消息时激活主程序。在一般的设计中,都不会这么做,因为这是浪费资源且得不到良好用户体验的。因此需要在自己的程序并闭后,将监听器取消。前文链接(点击进入)

一、建立一个后台服务,该服务用于接收消息并将消息广播给BroadcastReceiver。由于服务可以被终止,终止时不再转发消息,后台的BroadcastReceiver也因此不再生效,会自动被GC回收。程序的目标也达到了

package com.demo;

import android.app.Service;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Bundle;

import android.os.IBinder;

import android.telephony.gsm.SmsMessage;

public class ListenService extends Service {

public static final String SvrId = "RARNU.SERVICE.DEMO";

public static final String strACT = "android.provider.Telephony.SMS_RECEIVED";

private SMSMsgReceiver recv;

@Override

public void onStart(Intent intent, int startId) {

super.onStart(intent, startId);

}

@Override

public void onCreate() {

IntentFilter filter = new IntentFilter(strACT);

recv = new SMSMsgReceiver();

registerReceiver(recv, filter);

super.onCreate();

}

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public void onDestroy() {

unregisterReceiver(recv);

super.onDestroy();

}

public class SMSMsgReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals(strACT)) {

1 2 3  下一页

Tags:Android 实现 程序

编辑录入:coldstar [复制链接] [打 印]
赞助商链接