【发布时间】:2022-08-11 06:38:57
【问题描述】:
我在理解与 Android BroadcastReceiver 相关的一些概念时遇到了一些问题。我的目标是在后台(即应用程序未运行时)收听来电。我也在 Flutter 中编码,所以我创建了一个颤振插件.
已经有一个用于 SMS 的库:telephony。我研究了上述插件的代码。有一个IncomingSmsReceiver 扩展BroadcastReceiver,它接收所有短信并相应地处理它(当应用程序处于后台或未运行时,它会创建一个Isolate 并在该隔离内运行用户指定的回调)。
另一件需要注意的事情是,每当我关闭应用程序时,IncomingSmsReceiver 都会在不同的进程中运行,adb logcat 的以下行很明显
D Zygote : Forked child process 6287
I ActivityManager: Start proc 6287:org.sudipta.sms_handler_example/u0a525 for broadcast {org.sudipta.sms_handler_example/com.shounakmulay.telephony.sms.IncomingSmsReceiver}
这个子进程是分叉的只要当我关闭我的应用程序时。我不确定这种行为是如何实现的。谁能帮我解决这个问题?我不确定它是否会出现特定的行为,或者它是否在 BroadcastReceiver 本身中存在一些配置。
互联网上有很多关于如何保持广播接收器运行的材料(使用Service)。但是电话插件似乎没有使用任何服务来保持接收器运行。我只是想了解当我关闭我的应用程序时接收器是如何在不同的进程上运行的。
标签: java android flutter dart telephony