2

我在这里的两篇文章中找到了这段代码:

String url = "content://sms/"; 
Uri uri = Uri.parse(url); 
getContentResolver().registerContentObserver(uri, true, new MyContentObserver(handler));

但是我不知道 MyContentObserver 的构造函数中传递的这个处理程序是什么。

我想在“content://sms//sent”中注册一个 ContentObserver,以便在 Android 发送短信时收到通知,并且在 ContentObserver 的文档中说,方法 OnChange 将从构造函数中传递的处理函数中调用。

4

1 回答 1

4

AHandler与 a 结合使用,一个一个Looper地执行任务队列。对于 ContentObserver,它的onChange()方法可能会被多次调用。要将这些调用排队并按顺序执行它们,您需要提供一个处理程序。

如果您想onChange()在主线程中执行,只需创建一个新的 Handler,如:Handler handler = new Handler();并传递它。

但是如果你想onChange()在另一个线程中执行,你首先需要Looper为那个线程创建一个使用Looper.prepare();

您不需要Looper为主线程创建 a 的原因是它是自动为您创建的。

有关 Handler 和 Looper 如何工作的很好的解释,请查看这篇文章

于 2012-03-18T19:20:13.157 回答