后退按钮是否无法调用 stop()?

Does the Back Button fail to call stop()?

我的应用目前只有一个表单,它监听加速度计传感器。在我的 start() 方法中,我打开监听器,在 stop() 方法中,我将其关闭。我已经验证当我点击 Android 的主页按钮时监听器关闭,但是当我点击后退按钮时,应用程序退出并且 Android returns 到主屏幕,但是侦听器继续运行,这意味着 stop() 方法从未被调用过。我有责任使用调用 stop() 方法的代码来处理后退按钮吗?或者这是 CodenameOne 框架中的错误?在我看来,当后退按钮 returns 用户回到主屏幕时,它应该为我调用 stop()

我不知道 CodenameOne 框架,但我知道 Android SDK

Activity.onBackPressed() 应在您使用后退按钮时调用。仅仅因为您的 Activity 不再可见并不意味着它已被收割,这可能解释了为什么 Activity.stop() 没有(立即)被调用。

根据您的使用情况,Activity.onPause() 也可能会更好。

HTH。祝你好运 w/your 项目。

我不知道 CodenameOne 框架,但是当应用程序可见并且您按下后退按钮时,它会按以下顺序调用所有四种方法

1)onBackPressed()
2)onPause()
3)onStop()
4)onDestroy()

当你按下主页按钮时,它只会调用

1)onPause()
2)onStop() 

方法 因此,当您按下后退按钮时,必须调用 onStop。 麻烦把源码贴出来,方便大家看清楚你的问题

我不确定您问题的所有细节,但是您可以通过调用该表单上的 setBackCommand 来解决它。

yourForm.setBackCommand(  
                        new Command("closing the sensor listener"){
                            @Override
                            public void actionPerformed(ActionEvent ev){
                                // your code to close the listener
                            }
                        }
                );

此问题已修复。我已经验证过了,现在可以正常使用了。