school 2019


简图北京

简图hd

简图cy

简图xc

海淀

朝阳

Android JobSchedule机制

jobScheduler 是一个提供给App 端设定一个满足条件执行的任务,从App 设定一个Job到服务端接受这个job ,到服务端管理这个job,到最终触发这个job 以及重系统中移除,整个流程整体并不太复杂,而是细节计算上有很多点比较让人烦恼,我这里大概将其流程梳理一遍:

  • App 创建一个Job,并scheduler该job
  • JobSchedulerImpl通过Binder调用,调用到服务端JobSchedulerService端的scheduleAsPackage
  • 在添加到mJobs集合中之前先搜索系统中是否有相同的Job已经存在,如果存在则先canel掉并,再将其加入到mJobs中
  • 判断该Job是否有对应的限制条件为其Job 分配对应的Controller 。
  • Controllers 中所有的控制器要么是监听广播,要么是注册listener 去监听系统状态改变,当系统状态发生改变则都会去通过回调到JobSchedulerService
  • onStateChanged中在发送MSG_CHECK_JOB 消息,处理对应消息,首先判断mReportedActive 是否为true
  • 将ready好的Job加入到mPendingsJob列表中,然后调用到assignJobsToContextsLocked 核心方法
  • 在assignJobsToContextsLocked 完成各种计算后,将mActiveService的可以运行的Job,调用executeRunnableJob 方法。
  • 调用到JobServiceContext 中,开始启动服务bindService。在当服务binder上App端的JobService 服务,回调回onServiceConnected()
  • 在doServiceBoundLocked() 中调用到handleServiceBoundLocked中通过service.startJob() ,继而通过BinderCall 回调到JobServiceEnginee中,发送消息MSG_EXECUTE_JOB到main线程中
  • 调用到App 实现的JobService 中onStartjob中,执行App JobService 的具体事物
  • App端调用JobFinish,binder call 调用到JobServiceContext ,清理该Job的一些资源和变量,并将其从mJobStore 中的删掉。

原文链接:https://blog.csdn.net/u011311586/article/details/83027820

Android Handler消息机制

简介

在Android开发中,经常会遇到需要在不同线程之间切换的需要,比如网络请求(Android为了防止出现ANR异常,所以规定在Main Thread中不能进行网络请求,且最好不要进行耗时操作),子线程通信等等。此外,Android在设计之初,为了安全和用户体验考虑,规定了只允许在Main Thread里面进行UI更新,而不能在子线程里面进行,否则会抛出异常。这个时候,就需要用到Android的消息传递机制 — Handler。
在Android中,Handler消息传递机制主要依赖于Handler,Message,MessageQueue,Looper。其中:

  • Handler负责消息的发送与接收处理。
  • Message负责消息的封装,他本身可以看做消息的载体。
  • MessageQueue:是一个消息队列,所有需要发送的消息用类似于链表的形式进行存储,并且依据于消息消费的时间为标志确定存储位置。
  • Looper:进行消息循环与消息分发。

Tools wiki

在线开发工具

好用的在线工具:加密,格式化,转码,换算

insertpic

localpic

y11
y44
avatar
avatar
示例图片

onlinepic

avatar

示例图片

示例图片

base64pic

1
2
//![avatar](base64str1)
//[base64str1]:data:image/png;base64,iVBORw0......

sample

sample

test html md

test html md

test html title

  • 1 a
  • 1 a
  • 1 a
  • 1 a

  • 2 a
  • 2 a
  • 2 a
  • hexo+githubda搭建个人博客教程

    前言

    使用github pages服务搭建博客的好处有:

    1. 全是静态文件,访问速度快;
    2. 免费方便,不用花一分钱就可以搭建一个自由的个人博客,不需要服务器不需要后台;
    3. 可以随意绑定自己的域名,不仔细看的话根本看不出来你的网站是基于github的;
    4. 数据绝对安全,基于github的版本管理,想恢复到哪个历史版本都行;
    5. 博客内容可以轻松打包、转移、发布到其它平台;
    6. 等等;

    Hello World

    Your browser is out-of-date!

    Update your browser to view this website correctly. Update my browser now

    ×