ContentObserver监听短信数据库,可是一旦注册的服务或者Activity被杀死这个也就失效了。
有什么办法让这个监听程序不死亡的啊?而且用服务注册有个大问题:
ContentResolver resolver = getContentResolver();
observer = new SmsReceiver(mHandler,resolver);
这个mHandler无法获取,为了减小Service服务占的内存,我放在了其他的Activity里面去了。
有什么办法让这个监听程序不死亡的啊?而且用服务注册有个大问题:
ContentResolver resolver = getContentResolver();
observer = new SmsReceiver(mHandler,resolver);
这个mHandler无法获取,为了减小Service服务占的内存,我放在了其他的Activity里面去了。
import android.database.ContentObserver;
import android.os.Handler;
import android.os.Message;public class NewMessageContentObserver extends ContentObserver {
......
private boolean mIsUpdate = false;
private final static int UPDATE_START = 0x1000;
private final static int DELAY_TIME = 1500;
public static int sTempMessageCount;
public static int sNewMessageCount; public NewMessageContentObserver(Context context, Handler handler) {
super(handler);
mContext = context;
} @Override
public boolean deliverSelfNotifications() {
return super.deliverSelfNotifications();
} @Override
public void onChange(boolean selfChange) {
mUpdate.removeMessages(UPDATE_START);
mUpdate.sendEmptyMessageDelayed(UPDATE_START, DELAY_TIME);
if (xxxxx) {
mIsUpdate = true;
} } private final Handler mUpdate = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_START:
sNewMessageCount = Utilities.getNewMessageCount(mContext);
if (sNewMessageCount != sTempMessageCount) {
new Thread(new Runnable() {
public void run() {
sTempMessageCount = sNewMessageCount;
if (xxxx) {
mIsUpdate = true;
} else {
mIsUpdate = false;
mContext.updateNewMessage();
}
}
}).start();
}
break;
default:
break;
}
}
};
public boolean getIsUpdate() {
return mIsUpdate;
}
public void setIsUpdate(boolean isUpdate) {
mIsUpdate = isUpdate;
}
}