Andoid:即使在主活动屏幕上按下后退按钮,如何继续运行主要活动

时间:2015-06-27 07:29:23

标签: android

假设有两个活动A(主要活动)和B。如果我们按下活动A上的按钮,则活动B开始,如果我们按活动B上的后退按钮,活动A将返回。如果我们按下活动A屏幕上的“返回”按钮,我们就会退出应用程序。

我想问一下是否有办法让主要活动保持活跃状态​​。就像我们再次打开应用程序一样,不应该调用on create方法。然后我们返回与按下后退按钮之前相同的主要活动状态。

抱歉英语不好。

例如,在音乐播放器应用程序中,当我们按下应用程序中的后退按钮时应用程序关闭但音乐仍然继续播放,当我们再次打开应用程序时,音乐不再重新开始。表示不再调用onCreate方法

5 个答案:

答案 0 :(得分:2)

尝试覆盖 onBackPressed()

@Override
public void onBackPressed() {
     //here you can call super.onBackPressed() with some condition
}

重复how to disable back button in android

onBackPressed()实际上是在内部调用完成,所以通过覆盖它来间接禁用finish()

如果您想显示另一个屏幕,那么

@Override
public void onBackPressed() {
     Intent itent = new Intent(this, MyHomeScreenActivity.class);
     startActivity(itent);
}

如果您想将应用移至后台,则需要覆盖 onKeyDown()引用此

Moving application in background on back button event

答案 1 :(得分:1)

当你想要按下按钮时,你必须实现onBackPressed

 @Override
 public void onBackPressed() {
 //here you can call super.onBackPressed() with your require code
}

答案 2 :(得分:0)

我会重新阅读Android activity API and description。你想要做的只是在没有调用终结函数的情况下在另一个上面启动一个活动。

为了这样做,只需覆盖onBackPressed函数,如下所示

@Override
public void onBackPressed()
{
     Intent intent = new Intent(this, BActivity.class);
     startActivity(intent);
     super.onBackPressed();  // optional depending on your needs
}

答案 3 :(得分:0)

我只是看了你的评论,并根据你在那里提到的要求,应用程序应该按下后退按钮上的主要活动启动主屏幕,保持主要活动仍然有效,你可以写下面的代码:

public void onBackPressed() {
     Intent mainActivity = new Intent(Intent.ACTION_MAIN);
     mainActivity.addCategory(Intent.CATEGORY_HOME);
     mainActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     startActivity(mainActivity);
 }

此代码将在按下后退按钮的问题中从主要活动或活动A启动主屏幕,保持主要活动仍然有效

答案 4 :(得分:0)

在音乐播放器应用中,他们使用服务 http://developer.android.com/guide/components/services.html

您应该将它用于在后台运行的应用程序

我建议您阅读本教程MusicDroid - Audio Player Part

这些教程分为三部分。它很好地描述了如何使用服务和AIDL实现Android的音频播放器。

另请参阅此Android开发人员教程Media Playback