gpt4 book ai didi

android - android PhoneStateListener 是否在后台运行?

转载 作者:行者123 更新时间:2023-12-02 12:49:42 26 4
gpt4 key购买 nike

我目前正在开发一个 android 应用程序来监视来自电话的传入和传出调用并将调用信息注册到文件中,从我读过的内容来看 PhoneStateListener 似乎做了什么我需要。

问题是我需要应用程序在后台运行,我正在考虑为此使用服务,但我发现每个使用监听器的示例都在主 Activity 中声明它,所以我不确定是否我需要创建一个服务让它在后台运行。

关于更多上下文,我有具体说明我无法创建应用程序来“替换”默认调用应用程序,因此创建 GUI 没有多大用处(我知道该应用程序需要一个主要 Activity ,但是它的唯一功能应该是启动监视器)。

我现在的想法是这样的:

class CallMonitorService : Service() {
private lateinit var serviceLooper: Looper
private lateinit var serviceHandler: ServiceHandler
private lateinit var monitor: StateMonitor

private inner class ServiceHandler(looper: Looper) : Handler(looper) {
override fun handleMessage(msg: Message) {...}
}

override fun onCreate() {
Log.d(serviceName, "Created")
HandlerThread("ServiceStartArguments", Process.THREAD_PRIORITY_BACKGROUND).apply {
start()
// Get the HandlerThread's Looper and use it for our Handler
serviceLooper = looper
serviceHandler = ServiceHandler(looper)
val manager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager
manager.listen(StateMonitor(), PhoneStateListener.LISTEN_CALL_STATE | ...)
}
}
...
}

class StateMonitor : PhoneStateListener() {
// Handler methods
}

因此,总而言之,我需要 PhoneStateListener 始终运行,而不需要应用程序在前台运行。我应该创建一个服务来在后台运行监听器还是监听器自己在后台运行?

最佳答案

您需要将监听器移动到将独立运行的 Service 中。该服务已经在“后台”,因此您不需要创建额外的线程。此外,从您发布的内容来看,没有代码阻塞代码,您的所有事件都将以回调方式发送。

关于android - android PhoneStateListener 是否在后台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64013688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com