相关疑难解决方法(0)

如何从最近的应用程序列表中删除应用程

我想Android不会让人们这样做,因为他们认为他们有完美的任务/应用程序处理.但是,在我的情况下,我真的需要这样做.

我有一个活动A作为我的申请的入口点.在该活动中,它读取偏好并决定开始哪个活动,比如B或C.之后,它完成自己.因此,活动A永远不会出现在用户身上.

我的应用程序将东西存储在SD卡上,并不断读取它.因此,当卸载SD卡时,我需要向用户显示sdcard不可用的消息,而不是打开B或C.我在A中设置一个检查以在sdcard不可用时显示该消息.显示该消息时,A不会尝试启动B或C.

如果用户只从应用程序启动器输入我的应用程序,事情就会完美.但是,我发现用户也可以通过长按home进入我的应用程序并从最近的应用程序列表中选择它,如果他最近打开它.当用户这样做时,它跳过A并直接转到B或C.我没有检查它们,因此在我尝试访问sdcard时抛出异常,并弹出强制关闭对话框.

我可以简单地将支票移到B和C来解决这个问题.但是在未来,从A开始的活动数量将会增加.如果有6个,我需要将此支票复制到6个地方.毋庸置疑,这看起来非常难看,而且是一场维护噩梦.

因此,最好的解决方案应该是在卸载SD卡时从最近的应用程序列表中删除我的应用程序.但是,我找不到如何做到这一点.即使终止进程或使用ActivityManager.restartPackage,它仍会出现在列表中.谁能告诉我如何从列表中删除它?

android

55
推荐指数
4
解决办法
5万
查看次数

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

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

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我在相关问题上搜索了 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>
Run Code Online (Sandbox Code Playgroud)

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

android android-layout activity-lifecycle activity-finish android-activity

3
推荐指数
1
解决办法
6734
查看次数