很久前在写源码探索系类2–AsyncTask时候有提及到这个类,现在在这里把FutureTaskFutureCallback,这三个火枪手的关系温习下

起航

就让我们进入主题,开始说说这个FutureTask吧。

在安装开发过程中,系统限制我们对于耗时的任务是不能执行在主线程的,必须单独开一个线程去做。
所以我们在开发过程的一种写法是下面这样

1. 用Runnable

new Thread(new Runnable() {
        @Override
        public void run() {

         //do something
         ...

         myHandler.sendMessage(msg);   
        }
}).run();

但有时候我们需要这个线程的运算结果,可我们没办法直接获取,因此安卓配套了一个Handler给我们用,利用他发送消息会我们的主线程,执行一些更新任务等。

Read more »

这篇文章被CSDN搞丢了,好在通过使用谷歌搜索,
看到历史的记录版本,现在再根据记忆,补充下内容。
算是恢复了这篇文章的大概的模样。虽然对于CSDN的来说这文章没什么,但对于我来说就是自己花的时间和精力。

起航

这次我们来说说HandleThread,听名字好像就是Handler+Thread的感觉啊。
他和Handler的关系就像Service和IntentService一样,一个不支持耗时的任务,一个可以。
不过两者还是有点区别,一些是运行在主线程的,一个不在主线程跑。
很好理解,要是在主线程跑也能搞耗时任务,那不就逆天了??
对于他的使用,我们就不介绍了,让我们看下他实际做些什么吧。

就从我们的HandleThread的声明开始说起吧

Read more »

关于Window,PhoneWindow和WindowManager三者的关系是:

Window是一个抽象类,他的具体实现是PhoneWindow
我们通过WindowManager来管理Window。

我们的所有的界面,例如Activity,Toast,Dialog等都是靠Window来呈现,因此他是View的管理者咯。

很久前用过他的一个功能就是拿来做消息提醒,当有用户发来特定消息时候,就跑出来一个小悬浮窗来提示用户。现在看得多的就是各种管家关于内存的提示!这真的很让人纠结的安卓机啊!特别是某米的手机,当年发现他不支持这个功能!搞到得单独为他开发一个别的方式….

好了,说这么多,我们该从哪里开始说起呢?

Read more »

关于View的事件分发,实质就是关于MotionEvent时间的分发
再简单点说就是通过一堆判断,最后决定这个MotionEvent给谁用的问题。

  • 三巨头
    分发过程中有主要涉及到三个人:
    dispatchTouchEvent(),onInterceptTouchEvent(),onTouchEvent()
    这三者的关系如下

     public boolean dispatchTouchEvent(MotionEvent ev) {
          boolean belongToMe=false;
          if(onInterceptTouchEvent(ev)){
               belongToMe=onTouchEvent(ev);
          }else{
              belongToMe=child.dispatchTouchEvent(ev);
          }
          return belongToMe;
    }        
    
    Read more »

我们开发过程,基本需要自定义View,画一些自己的小插件出来
这需要我们掌握整个View的绘画过程和一些别的小技巧。
这里总结下整个View的源码中涉及到的一些绘制过程的核心部分,
之后再来看下整体的内容,毕竟整个源码有近2W1行,不是随便一时半会能搞定的,还是得下不少功夫。

Read more »