【发布时间】:2018-04-24 02:07:03
【问题描述】:
单击按钮时,我需要关闭活动。不幸的是,当单击按钮时,活动确实消失了,但仍在后台。用户仍然可以选择它,它会回到前面。我需要的是活动完全消失/销毁。
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 上搜索了相关问题,但是,它们都没有帮助完全结束活动。我已经尝试添加返回,添加另一个广播侦听器并传递命令以在 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" 并不能解决问题。以下是重新创建此问题的步骤,如果有人认为它是重复的或已解决,请尝试发表评论/答案,我会接受。
- 打开 Android Studio
- 创建空活动项目。
- 添加按钮。
- 在 MainActivity 的 onCreate 中为按钮点击监听器添加代码。
- 内部点击监听,调用完成。
- 运行应用程序并单击按钮,查看 Activity 是否仍在后台。
【问题讨论】:
-
@ReyanshMishra ...在下结论之前,请理解这个问题。我已经尝试过您的指针中提供的解决方案,在这种情况下它不起作用。自己尝试,创建空活动,添加按钮,在按钮单击侦听器中调用完成。如果它适合你,然后建议一个副本。
-
我在你提到的清单中标记它的原因我没有找到 android:excludeFromRecents="true" 并且它对我有用我刚刚尝试过看看youtube.com/watch?v=YoK4mZ7kFAY&feature=youtu.be。完成后可能有一个区别,您可以调用 System.exit(0);并在演示中退出应用程序,我点击了搜索按钮。
标签: android android-layout android-activity activity-lifecycle activity-finish