【问题标题】:Kill the application when the home button is triggered触发主页按钮时终止应用程序
【发布时间】:2014-07-03 15:53:59
【问题描述】:

我想在用户按下主页按钮时终止应用程序。我可以检测到主页键,但是当使用下面的代码杀死应用程序时

Process.killProcess(Process.myPid());

只有特定的活动被杀死,而不是整个应用程序。因此,当我重新启动应用程序时,它来自上一个活动

示例流程:

FirstActivity --> SecondActivity --> Third Activity --> Home Pressed on ThirdActivity --> 重新启动来自 SecondActivity 的应用(应该来自 FirstActivity)

请帮助我 谢谢

【问题讨论】:

  • 在杀死应用程序之前先杀死第二个活动...!!
  • 对不起,请检查已编辑的问题
  • 你可以在你的第一个活动中使用 Intent.FLAG_ACTIVITY_NO_HISTORY
  • 在 ICS 即 4.0+ 之后不能覆盖主页按钮

标签: android


【解决方案1】:

你需要清除顶部。尝试这个- 1.当你想退出时启动任何活动-

Intent intent = new Intent(this, end.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish(); 

2.in end Activity 调用在 onCreate() 中完成

应该可以了!

【讨论】:

    【解决方案2】:

    实现这一点的方式取决于您希望应用程序拥有什么样的流程。

    您是否希望能够从SecondActivityThirdActivity 恢复?如果没有,您可以在清单中将一个方便的参数添加到您的<activity>

    android:noHistory="true"
    

    http://developer.android.com/guide/topics/manifest/activity-element.html#nohist

    这个标志意味着当用户离开Activity时,它不会被保留在活动堆栈上。这实际上与用户离开时在Activity 上调用finish() 相同。

    【讨论】:

      【解决方案3】:

      抱歉,这是不可能的。正如android的文档所说。 You nedd to follow Activity Lifecycle.

      这里的活动将是stack one upon another。因此,当您完成第三项活动时,您需要完成两项活动。

      否则你的活动将从最后的活动堆栈开始

      为了更好地理解,请参阅Link

      【讨论】:

      • 那么killProcess是如何出现的呢?
      • Kill 是针对 Activity 而不是针对所有应用程序。 stackoverflow.com/questions/14109794/…
      • 感谢您的信息。那么当我在堆栈中间时如何杀死整个应用程序
      • 在第一个活动的 startActivity 之前移动到第二个活动调用完成()。在第二个活动中覆盖 onBackPressed 并在后按时调用第一个活动。现在,当您在家时,请按杀死当前活动。遵循此步骤将不会在堆栈中进行任何活动。所以再次打开应用程序从第一个活动开始。
      【解决方案4】:
       add activity in to stack when move from one activity to another... 
      
      by calling 
                   Activities app = new Activities();
                  app.addBackActivity((Activity) MYClass.this);
      
      
      
      and remove all activty by calling 
      
                     act.finishAll();
      
      
      
         public class Activities{
      
              public static Stack<Activity> classes = new Stack<Activity>();
      
                public Activity getBackActivity() {
                  return classes.pop();
                }
      
                public void addBackActivity(Activity activity) {
                  classes.push(activity);
                }
      
                public void finishAll(){
      
                    for(int i=0;i<classes.size();i++){
                        classes.get(i).finish();
                    }
                    classes.clear();
      
                }
      
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-23
        • 2011-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-30
        • 1970-01-01
        相关资源
        最近更新 更多