bar*_*use 6 android xamarin.android xamarin
我需要我的应用程序来监控(和解析)拨出电话(以及其他内容).
PhoneStateListener并听取"LISTEN_CALL_STATE",但由于呼叫尚未在呼叫日志数据库中,它会再次被解雇.(我可以启动一个计时器,但是... beurk ..)ContentObserver在CallLog URI上放一个(并摆脱多个调用)并检测新条目.这实际上是我想要做的(第三种选择),但为此我当然需要注册我的ContentObserver,因此问题是:我应该在何时何地注册?
显然,答案似乎是:在Service... 之内
但是什么时候开始服务?
BroadcastListeneron"NEW_OUTGOING_CALL" 来实现,如果服务尚未开启则启动服务.摆脱重启问题(只要应用程序已经启动一次而不是用户杀死)但是在注册内部会出现什么问题Application.OnCreate() 呢?
Application.OnCreate()无论如何,当我的一个人Activity被创建(第一次),或者我的BroadcastReceiver(重启之后)启动服务时,无论如何都会被调用,任何需要我的进程启动的东西...... Service 只要我的过程存在,我的生命也会存在.Service的,不必绑定,启动等...那么注册ContentObserver有什么不对吗Application.OnCreate()或使用a的优势Service是什么?
更新:
在亲服务上我会发现:
如果我希望我的应用程序在boot_time启动,我用我的BroadcastReceiver权利听"BOOT_COMPLETED" ?所以我的进程将被创建,我可以注册我的ContentObservers...但是它会被迅速销毁:
07-24 15:44:50.260: I/ActivityManager(531): No longer want com.test.test (pid 1829): empty #17
那是因为Android将其标记为"Level 5:Empty process".为什么?因为注册ContentObservers不会使我的进程"不为空".
另一方面,启动服务使我的流程成为"Level3:服务流程",它将不再被清理(至少不会立即...)所以如果稍后我启动应用程序,这个过程已经在这里,安静地听...
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |