为手机做的游戏肯定会对来电监听,短信监听,当然,此时此刻监听来电不是为了获得来电号码,监听短信也不是为了获得发信人号码,和信息内容,仅仅只为了如果游戏被这些系统信息打断如何恢复游戏不会出错。
经本人试验发现,如果有来电,被调用的函数顺序将会是这样onPause()-->onStop(),
然后挂断电话以后 调用函数顺序是这样:onRestart()-->onStart()-->onResume().
如果是正在玩游戏的时候锁键盘,则仅仅只会调用onPause(),解开键盘锁以后也仅仅只会调用
onResume().所以在恢复操作的时候,理论上只需要在onPause()方法里面做判断,保存数据,需要恢复的代码都写在onResume(),但是本人在onRestart和onResume中都做判断恢复了。
一个android程序,至少得有一个Activity,当这个Activity第一次运行的时候会调用onCreate(),这个方法在整个Activity从开始到销毁的过程中只会调用一次,仅仅为一次,在onCreate(),之后,紧接着会调用onStart(),之后就是调用onResume().
画个简单的图更加明了:
这是理想状态没有任何外力的情况下将会这样调用:onCreate()-->onStart()-->onResume,到此为止,Activity已经能被看到了。
当有电话进来:onPause()-->onStop(),此时的Activity已经不再可见了
挂断电话,从不可见到可见的状态:onRestart()-->onStart()-->onResume().到此为止Activity又是可见的。
增加一句:在模拟器上面发信息什么反应都没有
然后是锁键盘和打开键盘锁的过程:onPause()-->onResume().
最后销毁Activity才会调用onDestroy().
锁键盘的时候Activity并没有变得不可见,所以不会调用onStop,也就不会调用onRestart(),恢复的时候只会调用onResume().
经本人试验发现,如果有来电,被调用的函数顺序将会是这样onPause()-->onStop(),
然后挂断电话以后 调用函数顺序是这样:onRestart()-->onStart()-->onResume().
如果是正在玩游戏的时候锁键盘,则仅仅只会调用onPause(),解开键盘锁以后也仅仅只会调用
onResume().所以在恢复操作的时候,理论上只需要在onPause()方法里面做判断,保存数据,需要恢复的代码都写在onResume(),但是本人在onRestart和onResume中都做判断恢复了。
一个android程序,至少得有一个Activity,当这个Activity第一次运行的时候会调用onCreate(),这个方法在整个Activity从开始到销毁的过程中只会调用一次,仅仅为一次,在onCreate(),之后,紧接着会调用onStart(),之后就是调用onResume().
画个简单的图更加明了:
这是理想状态没有任何外力的情况下将会这样调用:onCreate()-->onStart()-->onResume,到此为止,Activity已经能被看到了。
当有电话进来:onPause()-->onStop(),此时的Activity已经不再可见了
挂断电话,从不可见到可见的状态:onRestart()-->onStart()-->onResume().到此为止Activity又是可见的。
增加一句:在模拟器上面发信息什么反应都没有
然后是锁键盘和打开键盘锁的过程:onPause()-->onResume().
最后销毁Activity才会调用onDestroy().
锁键盘的时候Activity并没有变得不可见,所以不会调用onStop,也就不会调用onRestart(),恢复的时候只会调用onResume().
本文深入探讨了在Android环境下,手机游戏对来电、短信监听机制的原理及实现方式,通过实验揭示了游戏暂停、恢复过程中的系统调用顺序,并详细说明了在不同场景下(如接打电话、锁屏等)如何妥善处理游戏状态,确保游戏流畅运行不受干扰。

被折叠的 条评论
为什么被折叠?



