开发时钟插件究竟是该用AnalogClock来实现呢?还是用BroadcastReceiver捕获Intent.ACTION_TIME_TICK?后者我已经试过了,Service里面注册BroadcastReceiver,当手机长时间启动一些比较大型的游戏或者长时间用浏览器上网的时候,再打开任务管理器查看这个程序的后台进程信息会发现,Service还在,但是时钟不更新了,我觉得大概是BroadcastReceiver被系统给销毁了,不知道怎么解决。这个广播机制太不可靠了,短时间的还行,持续时间太长的话你根本不知道系统什么时候会把你的Receiver给回收掉,也没有onDestory这种可以Override的方法
AnalogClock还不太了解,查了个资料,好像也要注册Receiver,郁闷了,离了它还活不了了是怎么滴,一点也不稳定,动不动就给你停了,时钟也更新不了,求详解啊~~~~~~~~~~~~~

解决方案 »

  1.   

    AnalogClock不需要注册receiver,直接使用就可以了吧。
      

  2.   

    BroadcastReceiver不可能像你说的被系统给销毁了,他只是注册一个广播侦听而已,你可以在它的接收到广播后打下log看一下,看看timetick是否唤起了你的BroadcastReceiver。
    两个可能:一个是你的BroadcastReceiver内容执行时间过长,系统会把你结束掉,这个可以通过在你的BroadcastReceiver最后一句话后打log查看
    另一个是你在BroadcastReceiver后台刷新界面不一定起作用,所以只是界面没有刷新造成的
      

  3.   

    那用AnalogClock开发桌面时钟简单多了
      

  4.   

    我仔细想了想你说的,似乎明白了点什么我有个想法,想这样试一下:接收到广播后启动Service来更新时钟,每次更新完成后都往sdcard的文本文件里打一下log(包括内存信息、启动时长、等等信息)看一下究竟是怎么回事会不会很麻烦?因为现在根本不知道它多长时间,因为什么就不更新UI了。。
      

  5.   

    嗯,思路看样子可以,最好先能确定不刷新UI时候,你的BroadcastReceiver是否确实执行完了而不是中间有异常、超时等。
    我也做过时钟,闹钟等,从来没遇到过你的问题