我对Android生命周期模型的理解是,当调用onPause()
时,我应该保存任何需要保存的状态,因为我的应用程序可以在我返回后的任何时候终止。我的目标是Gingerbread,因此onStop
可能永远不会被调用。
然而,在我的应用程序中,某个状态正在远程服务器上保存。我定期刷新这个状态,但如果调用onPause,我不确定要做的正确,因为我的理解是,只要onPause返回我的应用程序就可能被杀死。由于我必须在另一个线程中运行android http请求,这似乎有问题:如果我在onPause中启动请求然后返回,那么我的应用程序可能会在远程请求保存状态完成(甚至启动!)之前被杀死。
我想我应该在我睡觉的时候进行某种同步并等待请求工作,但首先我不确定我是否可以在onPause中执行此操作,其次,onPause不应该需要很长时间才能完成,所以如果有网络延迟,这也可能导致问题。
当需要将状态刷新到远程服务器时,或者通常是某种需要单独线程的方法时,是否有一些建议的方法可以在onPause中保存状态?
答案 0 :(得分:2)
不完全确定你在做什么,但是
你可以把你的HttpRequest放到Service,当你从这里产生一个线程时,当你的活动点击onPause时就不会被杀死。
然后,您可以使用BroadcastReciever回拨您的应用,如果尚未启动,则会启动您的活动。
答案 1 :(得分:2)
当需要将状态刷新到远程服务器时,建议在onPause中保存状态的方法:
在OnPause中启动服务(Android服务)并将您的状态从该服务刷新到服务器,并在完成所需任务后关闭服务。