当前位置:编程学习 > wap >>

Notification 程序常驻,当程序被GC回收后,程序是重新启动执行吗?


我想请问下,用了Notification 来做程序常驻,程序会回收后,点击Notification之后整个程序都是重新启动吗?
可是感觉是直接启动Application 然后启动最后一个Activtity,并没有按照正常的启动方式来启动应用。 --------------------编程问答-------------------- 用service可以 --------------------编程问答-------------------- 是的,并没有整个程序都启动 如果想被系统收回后重启。
可以通过service来解决,在onStartCommand()函数中返回 START_STICKY 这个标记。 --------------------编程问答--------------------
引用 2 楼 ncepu307 的回复:
是的,并没有整个程序都启动 如果想被系统收回后重启。
可以通过service来解决,在onStartCommand()函数中返回 START_STICKY 这个标记。

原来是这样哦,难怪MainActivity没执行全部,导致后面出现空指针了,
这个Service 能够给个详细的思路吗! --------------------编程问答-------------------- 我的需求是这样的,在应用任何一个页面,按Home键,新建一个Notification在状态栏,点击Notification回到之前页面。
现在有个问题,应用被回收之后,点击Notification是重新启动应用,但是并没有整个应用都启动,导致该页面使用的全局变量是个空指针,导致应用崩溃退出。

这个问题怎么解决啊! --------------------编程问答--------------------
引用 4 楼 wn520 的回复:
我的需求是这样的,在应用任何一个页面,按Home键,新建一个Notification在状态栏,点击Notification回到之前页面。
现在有个问题,应用被回收之后,点击Notification是重新启动应用,但是并没有整个应用都启动,导致该页面使用的全局变量是个空指针,导致应用崩溃退出。

这个问题怎么解决啊!

如果你要保留你的状态的话,那就用START_REDELIVER_INTENT,因为START_STICKY是不保留启动的intent的状态的。
具体实现大概:你按HOME键新建的notification中带一个启动service的intent(这个你应该知道怎么写吧),把你要保存的状态数据放到这个intent中,这个intent就传到service中了,接着
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    handleCommand(intent);//这个intent就保存了你的数据,然后恢复楼主所需的状态哈
    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_REDELIVER_INTENT;
}
补充:移动开发 ,  Android
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,