如何关闭我的应用程序的所有活动?

时间:2011-03-27 23:27:17

标签: android

我有一个包含多项活动的应用程序,例如:

活动1 - >活动2 - >活动3 - >活动4

我想关闭所有活动中的所有活动,然后回到家里打电话。

4 个答案:

答案 0 :(得分:22)

您可以使用BroadcastReceivers

来实现这一目标
  • 像这样创建一个BaseActivity

public class BaseActivity extends Activity {
    private KillReceiver mKillReceiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mKillReceiver = new KillReceiver();
        registerReceiver(mKillReceiver,
            IntentFilter.create("kill", "spartan!!!"));
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mKillReceiver);
    }
    private final class KillReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    }
}

  • 让您的活动延伸BaseActivity
  • 每当你想清除堆栈时:

Intent intent = new Intent("kill");
intent.setType("spartan!!!");
sendBroadcast(intent);

答案 1 :(得分:5)

您可以使用以下标志清除所有以前的活动:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 

我希望它会对你有所帮助!

答案 2 :(得分:3)

打开AndroidManifest.xml并找到您想要返回的活动并添加以下属性

android:launchMode="singleTask"

例如,HomeActivity类可能在android manifest

中有此功能
<activity android:name=".HomeActivity"
    android:launchMode="singleTask"/>

在任何时候,您都可以通过标准方式使用startActivity来关闭此活动之上的所有活动,例如

startActivity(new Intent(this, HomeActivity.class));

如果您通常将额外内容传递给意图,则无需执行此操作,因为它将以之前的任何状态返回,并且甚至伴随着类似于按下后退按钮的动画。

答案 3 :(得分:2)

  

我想关闭任何活动的所有活动

That is user-hostile in Android。请不要这样做。

  

然后回到家里的电话

我不知道这意味着什么。

如果用户按下HOME,您的活动可以而且应该保留在RAM中,以防用户返回您的应用程序。

如果通过“家庭电话”表示您的某个活动是应用程序的“主页”,并且您希望在用户按下某个按钮或选项菜单项时返回该活动,请使用以下方法调用startActivity()意图:

  • 标识您要返回的活动
  • 在标志中有FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP,表示您希望将该活动推进并摆脱用户之前启动的其他活动