我遇到了这样的问题。在主activity的oncreate函数中建立了一个service用来建立一个location manager用来不断更新gps数据。代码写在了service的oncreate函数中。gps数据保存在一个static全局变量中。我用一个textview实时显示gps数据,每隔5秒更新一次。主activity一个按钮用来退出,事件是先调用stopService关闭这个service,再finish()退出activity。但是只能在装载到手机的第一次正确运行,退出以后再进入程序就不行了。经过研究发现第二进入时根本就没有调用oncreate函数。并且换了onstart函数也不行。这是为什么啊,不是退出时已经用stopService停止了这个service了么?这两个函数到底实在什么时候被调用啊?

解决方案 »

  1.   

    onCreate 只有在第一次创建时才被调用。onStart 是在 CreateService() 调用时总会被调用
    onBind 是在 BindService() 调用时总会被调用。上面两个是“创建”服务的方法,总之第一次创建服务,肯定会调用 onCreate,以后就不会。不管调用多少次 CreateService(),都只有一个 Service。不管调用多少次 onBinde,都只有一个 Service。