简体   繁体   English

在OnBackPressed中使用moveTaskToBack,仍会销毁Activity

[英]Use moveTaskToBack in OnBackPressed, still destroy Activity

I have already searched through stackoverflow site, but unfortunately all answers are not working for me. 我已经在stackoverflow网站上进行了搜索,但是不幸的是,所有答案都不适用于我。 For some reasons, I want activity not being destroyed when users press Back button to back home screen if background service is still running. 由于某些原因,如果后台服务仍在运行,当用户按“后退”按钮返回主屏幕时,我希望活动不被破坏。

App normal workflow like: startup screen->main activity 应用正常的工作流程,例如: 启动屏幕->主要活动

  1. when pressed back button, and then reopen app, workflow like: startup screen->main activity, activity's state not like before back home screen(that is not what I want) 当按下后退按钮,然后重新打开应用程序时,工作流程如下: 启动屏幕->主要活动,活动状态不像回到主屏幕之前(那不是我想要的)

  2. when pressed home button, and then reopen app, workflow like: main activity, activity's state like before back home screen(that is what I want) 当按下主屏幕按钮,然后重新打开应用程序时,工作流程如下: 主要活动,活动状态如返回主屏幕之前(这就是我想要的)

Any idea how to get 2? 知道如何获得2吗? I know at 2, activity not being destroyed, just being paused or stopped, but how override back button and let it act like pressing home button? 我知道在2,活动没有被破坏,只是被暂停或停止,但是如何覆盖后退按钮并使其像按下主页按钮一样起作用?

Follow someone's ideas, using moveTaskToBack in onBackPressed, workflow is still like 1. 遵循某人的想法,在onBackPressed中使用moveTaskToBack,工作流程仍然类似于1。

Below are codes I have tried, 以下是我尝试过的代码,

public class SimpleActivity extends AppCompatActivity{
.....
.....
@Override
public void onBackPressed() {
    super.onBackPressed();
    moveTaskToBack(true);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    Toast.makeText(this, "onDestroy", Toast.LENGTH_LONG).show();
    if (musicPlayService!=null||serviceBinder)
            unbindService(serviceConnection);
        PlaylistFragment.checkBoxFlag=false;
        unregisterReceiver(detectHeadset);

}

try this: 尝试这个:

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


Try to remove super.onBackPressed() 尝试删除super.onBackPressed()

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM