单击按钮时使用完成关闭 android activity(完全关闭,甚至不在后台)
Close android activity (completely, not even in background) using finish on a button click
我需要在单击按钮时关闭 activity。不幸的是,单击按钮时,activity 确实消失了,但仍在后台。用户仍然可以 select 它并且它回到前面。我需要的是 activity 完全 gone/destroyed.
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();
}
}
我在 SO 上搜索了相关问题,但是,其中 none 有助于完全关闭 activity。我已经尝试添加 return,添加另一个广播侦听器并传递命令以在 onCreate 外部调用完成。所以在这一点上,问题是 - 这真的可能吗?或者这就是 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" 不能解决问题。以下是重新创建此步骤的步骤,如果有人认为它重复或已经解决,请尝试 post comment/answer,我会接受它。
- 打开Android工作室
- 创建空 activity 项目。
- 添加一个按钮。
- 在 MainActivity 的 onCreate 中为按钮点击监听添加代码。
- 在点击侦听器中,调用完成。
- 运行 应用程序并单击按钮,查看 activity 是否仍在后台。
您需要将其放入您的 XML 清单中:android:excludeFromRecents="true"
在您的 Activity TAG 中。
<activity
...
android:excludeFromRecents="true">
</activity>
试试吧。
在你体现。
<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);}
}
把额外的行 System.exit(0);调用完成后它对我有用。
你可以试试这个
android:excludeFromRecents="true", Use it in your manifest.
我需要在单击按钮时关闭 activity。不幸的是,单击按钮时,activity 确实消失了,但仍在后台。用户仍然可以 select 它并且它回到前面。我需要的是 activity 完全 gone/destroyed.
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();
}
}
我在 SO 上搜索了相关问题,但是,其中 none 有助于完全关闭 activity。我已经尝试添加 return,添加另一个广播侦听器并传递命令以在 onCreate 外部调用完成。所以在这一点上,问题是 - 这真的可能吗?或者这就是 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" 不能解决问题。以下是重新创建此步骤的步骤,如果有人认为它重复或已经解决,请尝试 post comment/answer,我会接受它。
- 打开Android工作室
- 创建空 activity 项目。
- 添加一个按钮。
- 在 MainActivity 的 onCreate 中为按钮点击监听添加代码。
- 在点击侦听器中,调用完成。
- 运行 应用程序并单击按钮,查看 activity 是否仍在后台。
您需要将其放入您的 XML 清单中:android:excludeFromRecents="true"
在您的 Activity TAG 中。
<activity
...
android:excludeFromRecents="true">
</activity>
试试吧。 在你体现。
<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);}
}
把额外的行 System.exit(0);调用完成后它对我有用。
你可以试试这个
android:excludeFromRecents="true", Use it in your manifest.