【问题标题】:Turn off proximity sensor after closing app - Android关闭应用程序后关闭接近传感器 - Android
【发布时间】:2014-05-26 00:40:40
【问题描述】:

我制作了一个应用程序,它可以读取接近传感器的值并根据该数据执行某些操作。我的问题是,即使用户按下主页按钮并离开应用程序,这些操作仍会继续执行,从而导致电池耗尽。

我的问题是,一旦应用存在或按下主页按钮时(没有正确退出应用),我该如何关闭接近传感器

这是我的第一个 Android 应用。以下是我在代码中分配接近传感器的方法:

    sm = (SensorManager) getSystemService(SENSOR_SERVICE);
    proxSensor = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);

    sm.registerListener(this,proxSensor,SensorManager.SENSOR_DELAY_NORMAL);

谢谢

编辑 对于那些想知道并且不想查找它的人,我使用以下方法解决了它:

public void onPause()
{
    super.onPause();
    sm.unregisterListener(this);
}
public void onResume()
{
    super.onResume();
    sm.registerListener(this,proxSensor,SensorManager.SENSOR_DELAY_NORMAL);
}

【问题讨论】:

    标签: java android android-sensors proximitysensor auto-close


    【解决方案1】:

    查看活动方法onStop()。只要 Activity 不再可见(应用程序退出或按下主页按钮),就会调用它。在此方法中,您将在其中放置代码以停止接近传感器。

    在此处查看 Android Activity 生命周期图了解更多信息:

    http://developer.android.com/reference/android/app/Activity.html

    【讨论】:

    • 所以要停止接近传感器,我只使用 uregisterListener 吗?
    • 是的,正如页面底部所述:developer.android.com/guide/topics/sensors/…
    • 好的,谢谢。现在只使用 onPause() 而不是同时使用 onPause 和 onStop 是否安全?如果应用程序在后台运行或在它上面出现其他东西,我只需要取消注册传感器。 onPause 和 onResume 是否足以涵盖两者?
    • 我明白了。谢谢!最后一条评论。我只是尝试了 onPause 并拉下 android 下拉菜单并没有阻止它。你说过会的。
    • 我可能对通知栏有误解-根据定义,当在活动 A 前面启动活动 B 时,会调用活动 A onPause()。如果您有系统对话框弹出询问是否启用蓝牙请参见:developer.android.com/images/bt_enable_request.png
    【解决方案2】:

    应用不会在 Android 上退出。最多活动将完成。但是要在另一个活动处于活动状态时关闭行为,请在活动的 onPause 中将其关闭。

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 2015-10-15
      • 2023-03-19
      相关资源
      最近更新 更多