我正在为 Android 编写一个基于 GPS 的应用程序。我想要一个按钮来退出将关闭 GPS 的应用程序,但我不希望返回箭头或 home 来关闭进程。
我已经阅读了 这个线程和许多其他线程,它们很好地解释了为什么我不想做我想做的事情。问题是如果我只是将箭头退出应用程序,则存在后台进程并且 GPS 仍在运行。我知道我可以使用 OnStop() 或 OnPause() 关闭这些,但我不希望返回箭头或 home 停止任何事情。无论用户做什么,我都希望所有 GPS 和处理程序继续运行,除非他在我的主屏幕上点击 EXIT,这会将他带到另一个屏幕,即确认退出并进行清理。这样,如果被错误击中,用户可以在不实际退出的情况下将箭头返回退出屏幕。
请理解,此应用程序将戴上手套在不利条件下在明亮的阳光下使用。阅读任何东西都非常困难,所以我使用 100 高的高对比度字体。除非用户真的希望它停止,否则它无法停止。但只是让它运行会耗尽电池。如果我只是让它运行,我对系统的行为没有任何问题,只是想到电池会耗尽并且我不希望任何简单的按钮按下(这可能是偶然的)来停止服务。我希望杀死这个应用程序的后台进程和关闭手机一样难,但我希望能够做到。
我已经尝试过finish(),它只是一个后退箭头,以及我在过去三个小时的谷歌搜索中看到的所有其他方法。我曾想过将我的退出按钮更改为关闭 GPS 按钮,但是如果用户使用后退箭头退出,他会进入主页并重新打开 GPS。
只是要清楚。我的应用程序有一个基于菜单的主屏幕。如果点击后退箭头,任何有用的页面都将返回到该菜单。菜单项之一是 EXIT。点击该菜单项会将您带到一个退出屏幕,该屏幕有一个退出按钮。如果用户不小心来到这里,他可以返回箭头返回菜单。如果他点击退出页面上的 EXIT 按钮,我可以关闭所有处理程序和 GPS,然后转到手机或平板电脑的主屏幕。至少那是我想要的并且不知道该怎么做。
我使用过类似的应用程序,它们使用 OnStop() 或 OnPause() 来关闭 GPS,它们很痛苦。那不是我想要的。请不要告诉我这是我想做的。我知道该怎么做。这不是我要问的。
谢谢。
更新:
感谢克里斯,我几乎解决了这个问题。我可以使用 EXIT 按钮关闭处理程序和 GPS,然后运行此代码
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
更新#2 我刚刚在进一步测试中发现的问题是应用程序在第二次调用时返回到 EXIT 屏幕。
更新#3 添加完成();在 startActivity(startMain) 似乎工作之后。完成后向主菜单返回箭头。希望一旦我安装了所有代码,它仍然可以工作。我删除了上面的第三行,所以我现在拥有的是:
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startActivity(startMain);
finish();