Android:近期任务列表(Recent App)的两个知识点

一:如何在Recent App不显示某个应用

长按HOME键或者Navigation bar的recent key在最近应用程序列表中会显示最近访问过的应用,如
何做到不显示某应用以达到隐藏进程的目的呢?
只需要在该应用AndroidManifest xml文件中主activity设置属性:android:excludeFromRecents=“true”

例如:

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

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

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

</manifest>
二:如何添加“一键删除最近应用列表”功能

Android系统中,在RecentActivity界面添加“一键删除最近应用列表”按钮,其实现分两个部分:
1. 在RecentActivity界面添加一个button,点击该button触发一键删除功能
2. 在button的onclick()方法中,通过调用AMS接口来删除AMS记录的recent list。
通过如下方式来实现:

final ActivityManager am = (ActivityManager)
mContext.getSystemService(Context.ACTIVITY_SERVICE);
final List<ActivityManager.RecentTaskInfo> recentTasks =
am.getRecentTasks(MAX_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE);
for(ActivityManager.RecentTaskInfo rt:recentTasks ) {
    if (am != null) am.removeTask(rt.persistentId,
    ActivityManager.REMOVE_TASK_KILL_PROCESS);
}



  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,Recent App 按钮是系统级别的按钮,通常不能完全禁用。但是,我们可以通过一些技巧来隐藏或者覆盖这个按钮。 下面是一种实现方法: 1. 创建一个透明的 Activity,覆盖在 Recent App 按钮上面,并且将其设置为全屏。 2. 在该 Activity 的 onCreate() 方法中,禁用 Recent App 按钮。具体实现代码如下: ``` @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏状态栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 隐藏导航栏 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE); // 禁用 Recent App 按钮 try { Object service = getSystemService("statusbar"); Class<?> statusBarManager = Class.forName("android.app.StatusBarManager"); Method disableRecent = statusBarManager.getMethod("disable", int.class); disableRecent.invoke(service, DISABLE_RECENT); } catch (Exception e) { e.printStackTrace(); } } ``` 3. 将该 Activity 添加到 AndroidManifest.xml 文件中,并设置为启动 Activity。 ``` <activity android:name=".DisableRecentActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` 4. 在该 Activity 的 onDestroy() 方法中,恢复 Recent App 按钮。具体实现代码如下: ``` @Override public void onDestroy() { super.onDestroy(); // 恢复 Recent App 按钮 try { Object service = getSystemService("statusbar"); Class<?> statusBarManager = Class.forName("android.app.StatusBarManager"); Method disableRecent = statusBarManager.getMethod("disable", int.class); disableRecent.invoke(service, ENABLE_RECENT); } catch (Exception e) { e.printStackTrace(); } } ``` 需要注意的是,这种方法只能隐藏或者覆盖 Recent App 按钮,并不能完全禁用它。同时,由于该方法需要创建一个透明的 Activity,可能会影响系统性能和用户体验。因此,我们建议在使用该方法时慎重考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值