我在这里的两篇文章中找到了这段代码:
String url = "content://sms/";
Uri uri = Uri.parse(url);
getContentResolver().registerContentObserver(uri, true, new MyContentObserver(handler));
但我不知道在 MyContentObserver 的构造函数中传递的这个处理程序是什么。
我想在“content://sms//sent”中注册一个ContentObserver,以便在Android发送短信时收到通知,并且在ContentObserver的文档中说,将从构造函数中传递的handle调用方法OnChange .
最佳答案
一个Handler
与 Looper
结合使用一项一项地执行任务队列。对于 ContentObserver,其 onChange()
方法可能会被调用多次。要将这些调用排队并按顺序执行它们,您需要提供一个处理程序。
如果你想要onChange()
要在主线程中执行,只需创建一个新的处理程序,例如:Handler handler = new Handler();
并通过它。
但是如果你想要onChange()
要在另一个线程中执行,首先需要创建一个Looper
对于该线程使用 Looper.prepare();
您不需要创建 Looper
的原因对于主线程来说,它是自动为您创建的。
有关 Handler 和 Looper 如何工作的详细解释,请查看 this article .
关于android - 短信 ContentObserver 的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760956/