我的应用目前只有一个表格,可以收听加速计传感器。在我的start()
方法中,我打开了侦听器,在stop()
方法中,我将其关闭。我已经验证了当我点击Android主页按钮时听众关闭,但当我点击后退按钮时,应用程序退出并且Android返回到主屏幕,但是听众继续前进,这意味着stop()
方法永远不会被调用。我有责任使用代码来处理后退按钮来调用stop()
方法吗?或者这是CodenameOne框架中的错误?在我看来,当后退按钮将用户返回到主屏幕时,它应该为我调用stop()
。
答案 0 :(得分:1)
我不确定您的问题的所有细节,但是您可以通过在该表单上调用setBackCommand来解决它。
yourForm.setBackCommand(
new Command("closing the sensor listener"){
@Override
public void actionPerformed(ActionEvent ev){
// your code to close the listener
}
}
);
答案 1 :(得分:0)
我不知道CodenameOne框架,但我知道Android SDK
。
Activity.onBackPressed()
。仅仅因为您的Activity不再可见并不意味着它已被收获,这可能解释了为什么Activity.stop()
未被立即调用。
根据您的使用情况,Activity.onPause()
可能也会更好。
HTH。祝你的项目好运。
答案 2 :(得分:0)
我不知道CodenameOne框架,但当应用程序可见并按下后退按钮时,它按以下顺序调用所有四种方法
1)onBackPressed()
2)onPause()
3)onStop()
4)onDestroy()
当您按下主页按钮时,它只会调用
1)onPause()
2)onStop()
方法 所以,当你按下后退按钮onStop必须被调用。 请您输入源代码,以便人们能够清楚地理解您的问题。
答案 3 :(得分:0)
这已得到修复。我已经对它进行了验证,现在它正常运行。