xxx

来源:互联网 发布:微信交友公众号源码 编辑:程序博客网 时间:2024/06/01 15:37
public void scheduleCheckLocked() {    //PMS对应的HandlerChecker没有monitor,因此mMonitors.size()恒等于0    //调用MessageQueue的isPolling函数,判断是否处于polling状态;    //当MessageQueue native层的looper处于等待状态,即没有事件需要处理时,isPolling返回true    if (mMonitors.size() == 0 && mHandler.getLooper().getQueue().isPolling()) {        mCompleted = true;        return;    }    if (!mCompleted) {        // we already have a check in flight, so no need        return;    }    mCompleted = false;    mCurrentMonitor = null;    mStartTime = SystemClock.uptimeMillis();    //HandlerChecker继承runnable,这里的意思是向PMS的handler发送一个HandlerChecker类型的runnable事件    mHandler.postAtFrontOfQueue(this);}public void run() {    final int size = mMonitors.size();    //PMS对应的HandlerChecker的mMonitors.size为0,跳过    for (int i = 0 ; i < size ; i++) {        synchronized (Watchdog.this) {            mCurrentMonitor = mMonitors.get(i);        }        mCurrentMonitor.monitor();    }    //只要PMS的mHandler在规定事件内,执行了上文传入的runnable事件,就说明没有阻塞,PMS是正常的    synchronized (Watchdog.this) {        mCompleted = true;        mCurrentMonitor = null;    }}


        public void addMonitor(Monitor monitor) {            mMonitors.add(monitor);        }

    public void monitor() {        if (mConnector != null) {            mConnector.monitor();        }        if (mCryptConnector != null) {            mCryptConnector.monitor();        }    }

    public void monitor() {        synchronized (mDaemonLock) { }    }

    @Override // Watchdog.Monitor implementation    public void monitor() {        // Grab and release lock for watchdog monitor to detect deadlocks.        if (NEU_C3_ALFUS_DEBUG) {            Slog.d(TAG, "Power Watchdog.Monitor entry");        }        synchronized (mLock) {            if (NEU_C3_ALFUS_DEBUG) {                 Slog.d(TAG, "Power Watchdog.Monitor OK!!!!!");            }        }    }


0 0
原创粉丝点击