- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在我的应用程序中注册了一个 BOOT_COMPLETED 接收器,我想监听 SMS 数据库的变化。
BroadcastReceiver 启动一个注册 ContentObserver 的临时服务。现在我想通知我的主要 Activity (尚未启动)观察者已成功注册。(我想这样做,因为如果用户第一次安装该应用程序,他不会重新启动手机,但也需要 ContentObserver。如果您有其他想法可以发布它。我只想要信息观察者已经注册)
我的想法是用静态属性通知 Activity : MyActivity.sObserverRegistered = true
但我认为这不好并且不起作用,因为 Activity 尚未开始并且被忽略了。知道如何解决这个问题吗?
谢谢
最佳答案
你的问题比这大得多。
i want to listen for changes on SMS Database.
Android SDK 中没有“SMS 数据库”,甚至没有 SMS 内容提供程序。尝试访问私有(private)专有的未记录的不可触及的 SMS 应用程序内容将在某些设备上中断,将在未来的 Android 版本中中断,将无法与第三方 SMS 应用程序一起使用,并且通常是一个坏主意。
The BroadcastReceiver starts a temporary Service which registers the ContentObserver.
没有注册 ContentObserver
的临时 Service
这样的东西。
Service
可能不是临时的,因此您的 ContentObserver
保持注册状态并且您的 Service
没有关闭。例如,如果您的 BroadcastReceiver
调用了 startService()
而您的 Service
没有调用 stopSelf()
(例如,它不是 IntentService
)。这不是很好,因为您现在正在绑定(bind)一个进程。但是,如果您可以说服您的用户您正在绑定(bind)一个进程是可以的,那么这是最好的答案,并且您的 Activity 可以在 Activity 启动时(重新)启动服务,以确保 ContentObserver
已注册。
可能是你的ContentObserver
注册的时间不长,因为临时的Service
会在Service
关闭的时候马上注销,服务立即关闭。从内存消耗的角度来看,这很好,但它可能对您的目标没有那么有效。
或者,可能是您正在泄漏内存,因为您注册了 ContentObserver
并关闭了 Service
而没有注销 ContentObserver
。这太可怕了,因为唯一清理 ContentObserver
的方法是 Android 终止进程。此外,它会在需要时执行此操作,因为就它而言,您不再使用该进程,尽管线程和 ContentObserver
和 Service
您泄露了。这充其量只会导致不可靠的代码。
关于android - 如何从 Boot_completed 接收器通知您的(未启动的)应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052629/
我的应用程序需要在后台运行一项服务,并且我希望它在手机开机时自动启动。我有 BOOT_COMPLETED 的常用 intent-filter,但发生的事情是...... 我打开手机。 它会一直启动到锁
我已经创建了一个 Android 应用程序,它应该在 BOOT 之后启动服务。它在 Nexus 5 手机上工作得很好,但我不能让它在华为平板电脑 (Mediapad X2) 上工作。我正在使用 And
我正在编写一个小型 Android 应用程序,它会在设备启动时启动我的服务。应用程序在所有 Android 版本 4.4.2(Mi Note 4G,必须在其安全应用程序中启用权限)、5.0(Lenov
是否每个设备都发送 BOOT_COMPLETED?我想在启动完成时启动一个 Activity 。 我将以下内容放在 list 中:
我想在设备启动完成时显示一个警告对话框。广播接收器没有问题,工作正常。但是当启动完成时,没有打开的 Activity ,因此我在这里得到 NullPointerException。在这种情况下如何显示
我想在设备启动时启动一个 alram,为此我做了以下事情 1) 用户权限 2) 在 list 文件中添加具有 Intent 操作的接收器
首先,我知道已经有数百个此类问题被提出,但我已经检查了一段时间,仍然找不到任何解决方案。 我见过 this answer说 BOOT_COMPLETED 不会发送到应用程序,除非用户在 Android
我知道这个问题在网站上被问了很多,但是,我似乎找不到解决方案。当应用程序未运行时,不会调用我的 BOOT_COMPLETED 接收器。 list :
我正在尝试使用尽可能少的代码从我的 apk 启动外部服务。在 4.0 AVD 上测试包并验证 logcat 中的响应似乎给出了正确的结果;但是,在实际设备上它不会加载。实际上,它甚至似乎根本没有在 l
我的应用程序每天推送一次通知(这是正常工作的)但在设备重启后通知不会再次触发。 我试图设置一个监听 BOOT_COMPLETED 的 BroadcastReceiver,但没有成功。 AndroidM
我目前正在做一个需要在另一个线程中运行的后台服务的 android 应用程序。问题是我想在 BOOT_COMPLETE 之后启动它,并且不希望它阻塞我的主线程。 有人知道吗? 最佳答案 您必须使用 B
我查看了本网站上的几篇关于BOOT_COMPLETED 未调用Broadcast Receiver 的帖子。我认为我的问题类似于这个问题 BroadcastReceiver not working a
我做了一个应用程序作为教程来学习如何在手机重启后重新启动已删除的闹钟。重新启动后,BroadcastReceiver 收到 BOOT_COMPLETED 操作并启动服务,该服务将重新启动所有警报。警报
我有一个关于重新安排任务的问题(带警报)我试图在未来的确切时间和日期设置任务然后我关闭了模拟器然后在等待弹出布局之后重新打开它当时间和日期到期时,我收到错误消息,提示无法在屏幕上打开(应用程序/Act
我想在我的 Android 应用程序中收听 APN 变化。 因此,我在 android.intent.action.BOOT_COMPLETED 上启动了一个服务。该服务启动一个 ContentObs
我需要在重启时更新一些警报,但我需要更新的一些信息在外部存储器中。 BOOT_COMPLETE 标志在 SD 卡完全安装之前设置,因此无法立即完成此更新。关于如何准确确定 SD 卡安装时间的任何建议?
有没有办法检测设备开机但是BOOT_COMPLETED广播?我知道我可以使用 BOOT_COMPLETED RECEIVER 捕获广播,但是是否有任何东西在设备打开后直接触发,例如,如果用户打开设备并
我正在尝试注册我的服务以在手机启动时启动。 我在我的服务类中设置了一个 BOOT_COMPLETED BroadcastReciever: public int onStartCommand(Inte
我已经注册了一个名为 CheckReceiver 的 BroadcastReceiver:-
我想在模拟器中使用操作 BOOT_COMPLETED 检查 BROADCAST RECEIVER。 这是我的代码 public class AutoRunService extends Broadca
我是一名优秀的程序员,十分优秀!