Android 后退按钮是否无法调用stop()?
我的应用程序目前只有一个窗体,用于监听加速计传感器。在我的Android 后退按钮是否无法调用stop()?,android,codenameone,Android,Codenameone,我的应用程序目前只有一个窗体,用于监听加速计传感器。在我的start()方法中,我打开侦听器,在stop()方法中,我关闭它。我已经验证了当我点击Android的home按钮时,监听器关闭,但当我点击back按钮时,应用程序退出,Android返回主屏幕,但监听器继续运行,这意味着从未调用stop()方法。我是否有责任用代码处理返回按钮以调用stop()方法?或者这是CodenameOne框架中的一个bug?在我看来,当返回按钮将用户返回主屏幕时,它应该为我调用stop()。我不知道Codena
start()
方法中,我打开侦听器,在stop()
方法中,我关闭它。我已经验证了当我点击Android的home按钮时,监听器关闭,但当我点击back按钮时,应用程序退出,Android返回主屏幕,但监听器继续运行,这意味着从未调用stop()
方法。我是否有责任用代码处理返回按钮以调用stop()
方法?或者这是CodenameOne框架中的一个bug?在我看来,当返回按钮将用户返回主屏幕时,它应该为我调用stop()
。我不知道CodenameOne框架,但我知道Android SDK
使用后退按钮时,应调用Activity.onBackPressed()。仅仅因为您的活动不再可见并不意味着它已经收获,这可能解释了为什么没有(立即)调用Activity.stop()
根据您的使用情况,Activity.onPause()
也可能工作得更好
嗯。祝您的项目好运。我不知道CodenameOne框架,但当应用程序可见并且您按下后退按钮时,它会按以下顺序调用所有四种方法
1)onBackPressed()
2)onPause()
3)onStop()
4)onDestroy()
当你按下主页按钮时,它只会呼叫
1)onPause()
2)onStop()
方法
所以,当你们按下后退按钮时,上面的按钮必须被调用。
请输入源代码,以便人们能够清楚地理解您的问题。我不确定您问题的所有细节,但是您可以通过在该表单上调用setBackCommand来解决问题
yourForm.setBackCommand(
new Command("closing the sensor listener"){
@Override
public void actionPerformed(ActionEvent ev){
// your code to close the listener
}
}
);
这个问题已经解决了。我已经验证过了,现在可以正常工作。这似乎是codenameone中的一个bug,我们将修复它。谢谢你能重现这个bug吗?是的,这已经在开源存储库中修复了。非常好。谢谢。仅供参考,我们每周五都会部署修复程序,因此最迟应在下周五将其安装到设备上