我现在有一个activity接收显示来自service发过来的信息,接收完后就没有关闭这个activity了,导致他一直停留在接收完成后的界面。现在希望在再一次定时启动的时候,先关闭掉这个activity,然后再开启他,再重新接受显示service传过来的信息。定时启动广播那里通过日志看到是接收到了这个定时启动的信息了,但是因为这个activity接收完后没有退出,页面就一直死活不动了…… 如果我在service里面在发送信息完成后,最后延时退出整个应用(这里会异常退出整个应用,但是不影响再次的定时启动),是可以再次到定时的时候,启动该activity接收显示service传过来的信息的。
    再来一遍,现在希望在再一次定时启动的时候,先关闭掉这个activity,然后再开启他,再重新接受显示service传过来的信息……该怎么写啊。
    附:我已经按照该博客:http://our2848884.blog.163.com/blog/static/14685483420109302018538/
(Service如何关闭启动自己的Activity)当中的第二种方法,用了finish,还是会异常退出整个应用。
    该activity内有动态注册广播,接收显示service传过来的信息就是由service里的sendBroadcast(intent);并且该activity是由另一个安排任务的activity启动的,这个安排任务的activity就是真正的由定时广播启动了。
    大致流程附图:

解决方案 »

  1.   

    我是这么想的,下一个定时启动的时候先发个广播去关掉activity2,再执行startActivity
      

  2.   

    谢谢哈 我试试 看看我会不会。 
    我就是想要你这个效果啊 不知道怎么写,onReceive里面可以发广播吗……?
    我现在是在service干完活后写了个延时关闭activity2,这样不怎么好。
      

  3.   

    service干完活后写了个延时关闭activity2,会出现异常退出的问题解决了,是因为我使用的extends Application类在manifest申明错地方了……
    现在才能开始研究下一个定时启动的时候先发个广播去关掉activity2,再执行startActivity,苦逼啊。
      

  4.   

    正在尝试在onReceive里面像service里面那样延时关闭activity2,希望能够成功,按道理来说是可以成功的……
      

  5.   

    用service还有什么意义呢   你要想完全关闭activity后在未来某一个时刻启动做法就是建立一个定时器  时间到了发一个广播 在收到广播后打开activity
      

  6.   

    你可以看到图不啊……?图感觉可以快速理解些。
    这个service是用来不断的发广播,持续时间很长的,一般都是几个小时以上,不停的发给activity,activity只负责显示接收到的信息哈。
    service里面已经可以安全关掉启动他的activity了,现在就是想下次定时启动时关掉他,而不是service干完活关掉他。这里有个时间差,不知道你看到没。
      

  7.   

    补充一下8楼对7楼的引用:
    建立一个定时器 时间到了发一个广播 在收到广播后打开activity
    这个现在不用想了,已经用alarmmanager做好了。问题是这样:
    比方说每天八点定时启动,明天八点启动了,然后经过几个小时,干完活了,这个显示的activity就停在最后的页面没有关掉,一直停到后天,当后天的八点的广播来的时候,这个activity死活没反应。
    这个问题我想解决的就是关掉他再重新启动,现在是可以在service里面关掉他了,关掉后,后天的八点定时广播是可以正常启动他的……
      

  8.   

    差不多解决了,原因是这个activity的mainfest里面有个属性是这样的:android:launchMode="singleTask" 改成android:launchMode="singleTop" 就可以了,不过出现了新问题,继续苦逼下去吧……