关闭Android应用程序中的所有运行活动?

vij*_*991 5 android android-activity

我创建了一个应用程序,并且从不对每个活动使用finish().如果我的用户点击了注销按钮,它将转到上一页.

如何关闭以前的活动并关闭应用程序?

Sag*_* G. 6

这是我尝试过的一种解决方法,它对我来说非常有用.

SOLUTION-1

this.finish();//try activityname.finish instead of this
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

在要退出应用程序的活动中使用它....

================================================== ================================上面的代码有助于恢复你上次停止的应用程序.

SOLUTION-2

如果要退出应用程序并关闭所有需要使用的正在运行的活动.

onActivityResult()
Run Code Online (Sandbox Code Playgroud)

例如,假设您有3个活动A,B,C,您可以从A-> B-> C导航,而在C,您要关闭所有活动,然后使用以下示例.

活动A.

public class A extends Activity {
int Finish = 100;
Button launch_second;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    launch_second = (Button) findViewById(R.id.start_second_act);
    launch_second.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent second = new Intent(A.this,
                    B.class);
            startActivityForResult(second, Finish);
        }
    });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case 100:
        this.finish();
        break;
    default:
        break;
    }
    super.onActivityResult(requestCode, resultCode, data);

}
Run Code Online (Sandbox Code Playgroud)

活动B.

public class B extends Activity {
private Button launch_next;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_main);
    launch_next = (Button) findViewById(R.id.start_third_activity);
    launch_next.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent third = new Intent(B.this,C.class);
            startActivityForResult(third, 100);
        }
    });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case 100:
        setResult(requestCode);
        this.finish();
        break;

    default:
        break;
    }
    super.onActivityResult(requestCode, resultCode, data);
}

}
Run Code Online (Sandbox Code Playgroud)

活动C.

public class C extends Activity {
Button kill_app;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.third_main);
    kill_app = (Button)findViewById(R.id.kill_app_btn);
    kill_app.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            C.this.finish();
            setResult(100);

        }
    });

}

}
Run Code Online (Sandbox Code Playgroud)

SOLUTION-3

finishAffinity()任何方法可以从任何活动中调用它,之前的所有活动都将被销毁.


hov*_*yan 1

对每个活动使用finish()

1)活动生命周期

2)关闭Activity并管理Activity生命周期

3)详细回答了同样的问题(2种方法 - 广播接收器(+1)和Intent.FLAG_ACTIVITY_CLEAR_TOP)