我正在为Android编写一个基于警报的应用程序,该应用程序由2个活动组成:
MainActivity
- 用户可以设置报警参数。
DataPage
- 监控相关数据并向用户显示,如果数据超出限制,则会触发警报(使用 m.player(。
问题是,当用户从数据页面导航回来时,它当然会返回到 MainActivity,但 DataPage 进程仍在后台运行,这是一个问题,因为如果用户再次设置警报,一个新的 DataPage 正在运行,现在设置了 2 个警报(没有取消第一个的选项(。
那么,如何在按下后退按钮时停止活动及其 Java 类进程?
我像这样覆盖了onBackPressed((方法-
finish();
Intent intent = new Intent(this, DataPage.class);
stopService(intent);
这个问题有很多答案。您应该先搜索,而不是直接在此处发布。
简单覆盖背压方法:
@Override
public void onBackPressed() {
super.onBackPressed();
this.finish();
}
这可能会有所帮助:
在要停止的清单的该活动块中添加android:noHistory="true"
属性,每当使用后按时,此属性将从堆栈中删除活动。
源
消息来源 说:
是否应从活动堆栈中删除活动并在用户导航离开时完成(调用其 finish(( 方法(从它开始,它在屏幕上不再可见 - 如果它应该是"真的"完成,如果没有,则为"假"。默认值为"false"。
值为"真"表示活动不会留下历史痕迹。它不会保留在任务的活动堆栈中,因此用户将无法返回。在这种情况下,onActivityResult(( 永远不会如果针对此活动的结果启动另一个活动,则调用。
活动完成不是问题,但计划警报是问题所在,当您退出活动时,计划警报可能仍处于活动状态。
如果您不想在活动未聚焦时触发警报,则需要取消警报。如果您使用的是 AlarmManager,则调用以下方法:
AlarmManager.cancel();