【问题标题】:Killing activity in android杀死android中的活动
【发布时间】:2014-12-15 04:51:00
【问题描述】:

这是返回按钮的代码。我想通过后退按钮杀死其他活动,但它不能在一项活动中工作,但我有其他活动并且没有一项活动它工作正常。请帮帮我。

public void onClick(View v) {

    Intent intent = new Intent(getApplicationContext(),
                    SomeActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

}

【问题讨论】:

  • 你能定义不工作吗?你到底想做什么?杀死您应用中的所有其他活动?
  • 如果你想在背压时终止你的跑步活动,那么只需调用 finish();就是这样
  • 是的,我想杀死我的应用程序中的所有其他活动。神奇的凤凰。
  • 如果它在所有其他地方都有效,那么在特定活动中使用此代码有什么问题?
  • 在您处理返回功能的代码中,只需使用 finish();它将杀死/完成之前正在运行的活动。在进一步查看developer.android.com/reference/android/app/Activity.html之前

标签: android android-activity kill


【解决方案1】:

也许这段代码会对你有所帮助:

public void onClick(View v) {
    Intent i = new Intent(getApplicationContext(), SomeActivity.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
    finish();
}

【讨论】:

  • MagicalPhoenix,这里有什么活动?因为我是安卓新手。你能定义一下吗?
【解决方案2】:

您必须根据 API 级别设置标志:

Intent intent = new Intent(getApplicationContext(), MainActivity.class);
if(Build.VERSION.SDK_INT >= 11)
{
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK);
}
else
{
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
}
startActivity(intent);

希望对你有所帮助ツ

【讨论】:

    【解决方案3】:

    您可以在AndroidManifest.xml 中的活动标签中设置android:noHistory="true",您不想将其保存在堆栈中。

    【讨论】:

      【解决方案4】:

      尝试在最顶层的父活动或基础活动上定义一个本地广播接收器:

      private final class KillReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
          finish();
        }
      } 
      

      在 onCreate() 中初始化和注册广播接收器,并在 onDestroy() 中在最顶层的父活动或基础活动中取消注册:

      私有 KillReceiver clearActivityStack;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          clearActivityStack = new KillReceiver();
          registerReceiver(clearActivityStack, IntentFilter.create("clearStackActivity", "text/plain"));
      }
      
      @Override
      protected void onDestroy() {
          super.onDestroy();
          unregisterReceiver(clearActivityStack);
      }
      

      现在当 wan 清除所有以前的活动时调用广播接收器:

      public void onClick(View v) {
          Intent clearIntent = new Intent("clearStackActivity");
          clearIntent.setType("text/plain");
          sendBroadcast(clearIntent);
          Intent intent = new Intent(getApplicationContext(),SomeActivity.class);
          startActivity(intent);
      }
      

      【讨论】:

        猜你喜欢
        • 2016-08-30
        • 2012-12-31
        • 1970-01-01
        • 1970-01-01
        • 2013-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-09
        相关资源
        最近更新 更多