使用按钮点击完成关闭Android活动(完全,甚至不是在后台)

fhity93d  于 2022-09-21  发布在  Android
关注(0)|答案(4)|浏览(158)

我需要在点击按钮时关闭活动。不幸的是,当点击按钮时,活动确实消失了,但仍然在后台。用户仍然可以选择它,它会返回到前面。我需要的是活动完全消失/被摧毁。

public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            Button button = (Button)findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}

我搜索了相关问题等,然而,这些问题都不能帮助完全结束活动。我已经尝试添加Return、添加另一个广播侦听器并传递命令以在onCreate外部调用Finish。因此,在这一点上,问题是-这是否真的可能,或者这是Android的工作方式,您可以调用Finish(),但它仍然在后台,用户可以重新启动它。

这是一个XML文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.app1.test.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

编辑:添加android:excludeFromRecents=“true”并不能解决问题。以下是重新创建它的步骤,如果有人认为它是重复的或已经解决的,请尝试并发布评论/答案,我将接受它。

1.打开Android Studio
1.创建空活动项目。
1.添加按钮。
1.在MainActivity的onCreate for按钮点击Listener中添加代码。
1.在内部点击Listener,调用Finish。
1.运行APP并点击按钮,查看活动是否仍在后台。

e7arh2l6

e7arh2l61#

就试一试吧。在你身上显化。

<activity
        android:excludeFromRecents="true"
        android:name=".Activities.SplashActivity"
        android:theme="@style/AppThemeSubActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

现在在您的Java代码中。

@Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.item_search:
    //                Intent intent = new Intent(MainActivity.this, SearchActivity.class);
    //                startActivity(intent);
                    finish();
                    System.exit(0);}
}

在调用Finish之后放入额外的System.exit(0)行;它对我来说是有效的。

f5emj3cl

f5emj3cl2#

您需要将以下代码放入您的XML清单中:android:excludeFromRecents="true"

在你的活动标签上。

<activity
            ...
             android:excludeFromRecents="true">
</activity>
x4shl7ld

x4shl7ld3#

你可以试试这个
Android:excludeFromRecents=“true”,在您的清单中使用它。

9w11ddsr

9w11ddsr4#

请试着把这个放回去

public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            Button button = (Button)findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onBackPressed();
            }
        });
    }
}

和这个终止应用程序进程的代码

moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);

相关问题