在Android中杀死活动

时间:2014-12-15 04:51:01

标签: android android-activity kill

以下是后退按钮的代码。我想通过后退按钮杀死其他活动,但它不能在一个活动中工作,但我有其他活动,没有一个活动,它的工作正常。请帮帮我。

public void onClick(View v) {

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

}

4 个答案:

答案 0 :(得分:2)

这段代码可以帮到你:

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();
}

答案 1 :(得分:0)

您必须根据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);

希望它有助于ツ

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

private 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);
}

现在,当要清除以前的所有活动时,请拨打广播接收器:

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);
}