我一直在尝试做类似于truecaller应用程序的东西,我的应用程序应该在呼叫挂断后显示一个屏幕.通过android.intent.action.PHONE_STATE在manifest文件中注册隐式广播来实现这一点.
但是,如果我将应用程序更改为目标Android O,则无法正常工作,因为Android O广播限制,我正在尝试找出此用例的替代解决方案.
替代方案建议在Android的文档:Job scheduler或注册一个service与context.
作业调度程序:由于Job scheduler优化,接收回调会有一些延迟.因此,如果我们的应用程序屏幕在电话呼叫后几分钟显示,并且每隔几秒检查一次新的呼叫记录就会导致电池耗尽问题,这将影响用户体验.
在Java中使用上下文注册服务:即使应用程序未处于活动状态或活动状态,我也希望该行为能够正常工作.如果系统杀死了,这将无效Service.
注册前台服务:这需要一直向用户显示通知,这将是用户的垃圾邮件,并且全天候运行服务会消耗大量资源,这会破坏广播限制的整个目的.
请建议一个替代解决方案,以便用户体验保持不变.
提前致谢
performance android android-broadcast android-broadcastreceiver android-8.0-oreo
Using Kotlin to filter a list
var datalist: List<DataType>
val list = datalist.filter {it.Id == currentFilterId}
Run Code Online (Sandbox Code Playgroud)
would like to put in some log to debug the data
val list = datalist.filter {
Log.d(TAG, "$it, currentFilterId: $currentFilterId)
it.postId == currentPostFilterId
}
Run Code Online (Sandbox Code Playgroud)
how to put in multiple lines of statements inside the filter function?