以编程方式将 Android 活动置于“已停止”状态,而不破坏它?

Posted

技术标签:

【中文标题】以编程方式将 Android 活动置于“已停止”状态,而不破坏它?【英文标题】:Programmatically put an Android activity in its "Stopped" state, without destroying it? 【发布时间】:2018-09-29 06:56:39 【问题描述】:

我正在 android 中创建一个音乐应用程序,其中有一个播放音乐的后台服务,以及一个具有各种片段并且是应用程序 UI 的 Home 活动。

当我按下手机上的主页按钮时,这个应用程序当然会被置于后台,并且生命周期方法被调用到 onStop(),其中 UI 与服务为了允​​许后台播放,用户可以继续使用他们的设备并做其他事情。当我回到我的 UI Activity 时,onStart 被调用并且 UI 和服务重新连接在一起,让我重新控制音乐。 onStart 让我在前台相同的活动它不会创建相同活动的另一个实例

我正在尝试实现一个功能,当我按下设备上的后退按钮时,UI 活动可以具有与主页按钮相同的行为,即简单地放置 UI在后台(onStop)。相反,后退按钮的默认行为是完成(),终止调用它的当前活动(因此调用 onDestroy)。

我能做些什么呢?在网上真的找不到任何东西。似乎每个音乐应用都有这样一个简单的功能(按下时不会杀死应用,而是将其发送到后台)

【问题讨论】:

【参考方案1】:

您可以覆盖onBackPressed 并将活动任务移到后面。基于documentationActivity'r在Task中的顺序也将保持不变:

@Override
public void onBackPressed() 
    this.moveTaskToBack(true);

【讨论】:

这会保持该活动实例的运行吗? (以及其中的所有片段)。我现在就试一试 它应该表现得好像 onStop() 被调用 这正是我想要的。谢谢 太棒了!享受编码

以上是关于以编程方式将 Android 活动置于“已停止”状态,而不破坏它?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将片段添加到android中的框架布局

以编程方式将PC置于睡眠模式

使用 Javascript 以编程方式将 Google Chrome 置于全屏模式?

如何以编程方式退出 Android 应用程序?

在其线性布局垂直父Android中将以编程方式创建的单选按钮居中

Android 通知单击保持堆栈并在需要时将应用程序置于最前面。如果特定活动在顶部,则传递数据