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

时间:2010-09-21 17:21:15

标签: android

我想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,它仍会出现在列表中。谁能告诉我如何从列表中删除它?

9 个答案:

答案 0 :(得分:197)

<activity android:name=".MainActivity"
        android:excludeFromRecents="true" ...

AndroidManifest.xml的活动声明中。

答案 1 :(得分:17)

其他属性可以帮助您的活动与同一个包中的其他活动隔离。

<activity 
android:name=".aActivity"
android:excludeFromRecents="true"
android:taskAffinity=""
android:launchMode="singleInstance">

答案 2 :(得分:16)

只需在清单文件中的活动标签中添加android:excludeFromRecents="true"即可。

答案 3 :(得分:11)

您需要设置AndroidManifest.xml:

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

或从

开始此活动
intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

以及AndroidManifest.xml

<activity>
  ...
  android:label=""
  ...
</activity>

将标签设置为空将使此活动不会显示在“最近的应用”列表中。

答案 4 :(得分:4)

我不建议这样做,但我会尝试以下选项:

选项1:

在B和C上添加:

protected void onPause() {
  finish();
}

选项2:

AndroidManifest

中添加B和C以下内容
android:noHistory= "true"

答案 5 :(得分:4)

可能无法从最近的应用列表中删除您的应用,绝对不是最佳解决方案。这只会让期望所有应用程序行为相似的用户感到困惑。

无论如何,我认为它不会解决你的问题。如果用户在活动B上回家,然后从主页选择您的应用程序,它将再次启动Activiy B.

有很多方法可以解决实际问题。一个简单的方法可能是创建一个执行SD卡检查的基本活动,并让您的所有活动都从中扩展。这样检查只在一个地方。

答案 6 :(得分:2)

好的,我知道它可以在2.3.4中完成。打开应用程序Toddler Lock会清除最近的应用程序列表,这样当您长按主页键“锁定”手机时,列表为空白。不幸的是我还没有找到怎么做。所以对于任何正在寻找和阅读postf的人来说,说不可能不要放弃。我确定不是。

答案 7 :(得分:1)

尝试一下, 它将完成所有活动并从最近的用户中删除应用程序

private fun killCurrentApp() {
    val am = this.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager?
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        val appTasks = am!!.getAppTasks()
        if (appTasks.size > 0) {
            val appTask = appTasks.get(0)
            appTask.finishAndRemoveTask()
        }
    }
}

答案 8 :(得分:0)

如果您想退出按钮上的应用程序,请单击使用此代码:

Dim lastRow&
With Sheets("MoM")
     lastRow = .Cells(.Rows.Count,8).End(xlUp).Row
    .Range("H2:H" & lastRow).Value = .Range("H2:H" & lastRow).Value
End With

要杀死完整的应用程序并将其从Runningapp列表中删除,请通过其pid(令人讨厌的)杀死应用程序...在上面的代码之前使用这一行。

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);