我在这里的两个帖子中找到了这段代码:
String url = "content://sms/";
Uri uri = Uri.parse(url);
getContentResolver().registerContentObserver(uri, true, new MyContentObserver(handler));
但我不知道这个处理程序在MyContentObserver的构造函数中传递了什么。
我想在“content:// sms // sent”中注册一个ContentObserver,以便在Android发送短信时收到通知,并在ContentObserver的文档中说明将从构造函数中传递的句柄调用OnChange方法
答案 0 :(得分:4)
Handler
与Looper
结合使用,逐个执行任务队列。对于ContentObserver,可能会多次调用其onChange()
方法。要对这些调用进行排队并按顺序执行它们,您需要提供一个处理程序。
如果您希望在主线程中执行onChange()
,只需创建一个新的Handler,如:Handler handler = new Handler();
并传递它。
但是如果你想在另一个线程中执行onChange()
,首先需要使用Looper
Looper.prepare();
您不需要为主线程创建Looper
的原因是它会自动为您创建。
如何处理Handler& Looper工作,检查this article。