Android 11 在重启的时候清除最近任务缓存

Android 11 在重启的时候清除最近任务缓存


前言

在进行frameworks定制开发的时候,客户提出需要在重启时候将最近任务的缓存,全部清除掉,每次重新加载app进程。

一、问题解决

1.定位问题

客户提出需要在重启时候将最近任务的缓存,全部清除掉,每次重新加载app进程。经过查看得知在桌面的最近任务内有个全部清除的按钮,最终敲定在开机时接受开机广播,然后进行模拟按钮的点击时间。最终发现按钮是在加载在launcher3中,遂不需要进行开机广播的接受,因为开机运行的第一个app便是launcher3,解决办法如下

2.解决问题

路径:

android/packages/apps/Launcher3/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java

通过查看RecentsView.java的代码发现在RecentsView(),实例化了这个按钮.

     public RecentsView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setPageSpacing(getResources().getDimensionPixelSize(R.dimen.recents_page_spacing));
        setEnableFreeScroll(true);

        mFastFlingVelocity = getResources()
                .getDimensionPixelSize(R.dimen.recents_fast_fling_velocity);
        mActivity = (T) BaseActivity.fromContext(context);
        mModel = RecentsModel.INSTANCE.get(context);
        mIdp = InvariantDeviceProfile.INSTANCE.get(context);
        mTempClipAnimationHelper = new ClipAnimationHelper(context);

        mClearAllButton = (ClearAllButton) LayoutInflater.from(context)
                .inflate(R.layout.overview_clear_all_button, this, false);// 实例化全部清楚按钮
        mClearAllButton.setOnClickListener(this::dismissAllTasks); // 设置点击事件

        mTaskViewPool = new ViewPool<>(context, this, R.layout.task, 20 /* max size */,
                10 /* initial size */);

        mIsRtl = !Utilities.isRtl(getResources());
        setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);
        mTaskTopMargin = getResources()
                .getDimensionPixelSize(R.dimen.task_thumbnail_top_margin);
        mSquaredTouchSlop = squaredTouchSlop(context);

        mEmptyIcon = context.getDrawable(R.drawable.ic_empty_recents);
        mEmptyIcon.setCallback(this);
        mEmptyMessage = context.getText(R.string.recents_empty_message);
        mEmptyMessagePaint = new TextPaint();
        mEmptyMessagePaint.setColor(Themes.getAttrColor(context, android.R.attr.textColorPrimary));
        mEmptyMessagePaint.setTextSize(getResources()
                .getDimension(R.dimen.recents_empty_message_text_size));
        mEmptyMessagePaint.setTypeface(Typeface.create(Themes.getDefaultBodyFont(context),
                Typeface.NORMAL));
        mEmptyMessagePadding = getResources()
                .getDimensionPixelSize(R.dimen.recents_empty_message_text_padding);
        setWillNotDraw(false);
        updateEmptyMessage();

        // Initialize quickstep specific cache params here, as this is constructed only once
        mActivity.getViewCache().setCacheSize(R.layout.digital_wellbeing_toast, 5);
    }
    }

解决问题,在调用 mClearAllButton.setOnClickListener(this::dismissAllTasks); // 设置点击事件
的地方,增加模拟点击事件就可以解决这个问题。这样的话每次开机的时候都会走这个事件达到了客户的要求

--- a/android/packages/apps/Launcher3/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java
+++ b/android/packages/apps/Launcher3/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java
@@ -327,6 +327,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
         mClearAllButton = (ClearAllButton) LayoutInflater.from(context)
                 .inflate(R.layout.overview_clear_all_button, this, false);
         mClearAllButton.setOnClickListener(this::dismissAllTasks);
+        mClearAllButton.performClick();
 
         mTaskViewPool = new ViewPool<>(context, this, R.layout.task, 20 /* max size */,
                 10 /* initial size */);
@@ -1233,7 +1234,8 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
     }
 
 

总结

通过查询弹出框字段,通过grep 命令 找到字段id然后定位到弹出框位置,粗暴解决

每日赠言

有位智者说,学习是为了完善人生,而非享乐人生。追求卓越,成功自会随你而来

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android Studio清除缓存的命令是通过点击菜单栏的"File",然后选择"Invalidate Caches/Restart"来实现的。\[2\]在弹出的对话框中选择"Invalidate and Restart",Android Studio将会清除缓存。如果这个方法没有解决问题,还可以尝试执行以下操作:\[3\] 1. 执行"Build"菜单下的"Clean Project"操作。 2. 执行"File"菜单下的"Invalidate Caches/Restart"操作。 3. 删除项目目录下的".idea"和".gradle"文件夹。 这些操作可以帮助你清除Android Studio的缓存,解决一些常见的问题。 #### 引用[.reference_title] - *1* [Android studio 清除缓存数据的步骤](https://blog.csdn.net/weixin_41937552/article/details/113496315)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【Android 教程系列第 24 篇】在 Android Studio 中清理缓存的两种方式](https://blog.csdn.net/qq_42351033/article/details/121432427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Android studio终极清缓存](https://blog.csdn.net/c_he_n/article/details/105855883)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值