chinwetang

Results 3 comments of chinwetang

### onTouchListener、onTouchEvent、以及onClickListener谁的优先级高? 我们知道自定义View时如果有交互,避不开要重写View的`onTouchEvent()`,项目开发中`setOnClickListener()`的使用更是家常便饭,除此之外,偶尔也会`setOnTouchListener()`自定义触摸事件,那么如果我一个自定义View重写了`onTouchEvent()`,同时又`setOnClickListener()`以及`setOnTouchListener()`,它们的执行顺序时怎样的?一定都会执行吗? 我们看到View的`dispatchTouchEvent()`中有这么一段代码: ``` if (li != null && li.mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED && li.mOnTouchListener.onTouch(this, event)) { result = true; } if (!result &&...

### 为什么AsyncTask只能执行一次,只能用一次execute? 我们点开`execute()`,可以看到调用了`executeOnExecutor()` ``` @MainThread public final AsyncTask execute(Params... params) { return executeOnExecutor(sDefaultExecutor, params); } ``` 看到**executeOnExecutor** ``` @MainThread public final AsyncTask executeOnExecutor(Executor exec, Params... params) { if (mStatus !=...

之所以避免重建是因为重建会造成: 1、资源浪费(CPU、内存、网络等等); 2、逻辑复杂,本来一个简单的界面如果要兼容重建的情况逻辑就会变得复杂; **但是有些时候重建是有必要**,比如横竖屏布局不一致等,我们没法解决第一个问题,但是我们可以用Android Jetpack架构组件之 ViewModel来解决逻辑复杂问题,它不会因为Activity被销毁而销毁,所以可以缓存页面操作过程中的数据,我们只需要在对应的onCreate或者onSaveInstanceState()重新绑定数据就好了。