notepad 模块修改 注意到的 alarmManagerService 和 recent 模块

到了新公司就是小白白,遇到设置好的闹钟提醒,在一键清理后不提醒, 一款手机是好的(6.0),一款有问题(5.1)看了模块代码是没问题的,应该是
framework的 service 中的 alarmManagerService 或者 systemui模块中 recent的问题,幸好有大神帮忙,以后会仔细看看这2个模块

  1. alarmManagerService 打日志,清理后 会收到
    android.intent.action.packagerestarted 广播,在一个receviver中,看到有移除一些东西,另外一个中兴出来的同事也帮我看了(感谢死他了,我是真的什么都不会呀)
    在移除中 (这个移除应该是 在清理那里清理成功后,他这边也会清理掉 相应的alarm)过滤了相应包名,试了下。可以唤醒,但是这样肯定不对呀。

2.recent模块
/android/frameworks/base/packages/SystemUI
com.android.systemui.recents 原生的
com.android.systemui.recent 另外的
RecentsActivity 只是对 清理buton做了隐藏显示处理
真正多点击清除事件在 RecentsView

在 RecentsView.java 中 点击事件 setOnClickListener 执行
dismissAllTasksAnimated (for 循环执行 stackView.dismissAllTasks() )

进入 TaskStackView.java中 dismissAllTasks()方法 会执行2个操作
1个是 Remove visible TaskViews
第2个 // Remove any other Tasks 第2个操作执行 mStack.removeTask(t); 方法

进入 TaskStack.java 中 /* Removes a task / removeTask() 方法中最后一句话 回调 // Notify that a task has been removed
mCb.onStackTaskRemoved(this, t, newFrontMostTask);

进入 TaskStackView.java 中 public void onStackTaskRemoved(TaskStack stack, Task removedTask, Task newFrontMostTask) 这里是真正开始准备kill的地方

    @Override
    public void onStackTaskRemoved(TaskStack stack, Task removedTask, Task newFrontMostTask) {
        // Remove the view associated with this task, we can't rely on updateTransforms
        // to work here because the task is no longer in the list
        TaskView tv = getChildViewForTask(removedTask);
        if (tv != null) {
            mViewPool.returnViewToPool(tv);
        }
        // Notify the callback that we've removed the task and it can clean up after it
        if (!removedTask.getIsLocked()) {
            String packageName = removedTask.key.baseIntent.getComponent().getPackageName(); 
            //Log.d("onStackTaskRemoved", "packageName = "+packageName);
            if(packageName.equals("com.xx.xxx"))
            {
                   String PAUSE_ACTION = "com.xx.xxx.pause";
                   Intent intent = new Intent(PAUSE_ACTION);
                   getContext().sendBroadcast(intent);
                   mRemovedTask = removedTask;
                   Message msg = mHandler.obtainMessage(FLIP_MSG);
                   mHandler.sendMessageDelayed(msg, mDelaytime);
                   mCb.onTaskViewDismissed(removedTask);
            } else
            {   //判断 mDontKillProgress 处理
                if (mDontKillProgress.contains(packageName)) {
                     mCb.onTaskViewDismissed(removedTask);
                 } else {
                    //不然则全清
                     mCb.onTaskViewDismissed(removedTask);
                     mActivityManager.forceStopPackage(packageName);
                 }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空白的泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值