1.IPC
Inter-Process Communication ,含义:为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。
指定android:process属性,然后编译运行,从而使其运行在一个独立的进程中。但是多进程并不是这么简单的,
多进程会造成以下问题:
- 静态成员和单例模式会失效
- 线程同步机制完全失效
- SharePreferences的可靠性下降
- Application会多次创建
系统创建新的进程肯定会分配独立的虚拟机,这个过程其实就是启动一个应用的过程,所以就重新启动,创建一个新的AppLication。=====》》》跨进程通信,比如通过Intent来传递数据,共享文件和SharedPreferences,基于Binder和Messager和AIDL以及socket
Android中的IPC方式:
- 使用Bundle
- 使用文件共享
- 使用Messenger
- 使用AIDL
- 使用ContentProvider
- 使用Socket
2.View
MotionEvent
- ACTION_DOWN 手指刚接触屏幕
- ACTION_MOVE 手指在屏幕上移动
- ACTION_UP 手指离开屏幕的一瞬间
通过MotionEvent对象我们可以得到点击事件发生的x坐标,y坐标。getX/getY返回的是
相对于当前View左上角x和y的坐标。getRawX/getRawY返回的是相对于手机屏幕左上角的x坐标和y坐标。
TouchSlop
系统所能识别的被认为是滑动的最小距离。当手指在屏幕上滑动时,如果两次滑动之间的距离小于这个变量,呢么系统就不认为你是在进行滑动操作。原因就是滑动的距离太短,系统不认为这个是滑动。ViewConfiguration.get(getContext()).getScaledTouchSlop()。在处理滑动的时候可以跟这个参数相比,做一些处理,可以有更好的用户体验。
VelocityTracker GestureDetector Scroller
- VelocityTracker 追踪速度,用于追踪手指在滑动过程中得速度,包括水平速度和竖直速度,
VelocityTracker x=VelocityTracker.obtain();
x.addMovement(event);
//获取当前速度 在1000ms内滑动距离的像素数
x.computeCurrentVelocity(1000);
int xVelocity=(int)x.getXVelocity();
int yVelocity=(int)x.getYVelocity();
速度=(终点位置-起点位置)/时间段
//当不需要的时候 需要调用clear方法来重置并回收内存:
x.clear();
x.recycle();
- GestureDetector
手势测量,辅助检测用户的单击、滑动、长按、双击等行为。
GestureDetector mGestureDetector = new GestureDetector(this);
//解决长按屏幕后无法拖动的现象
mGestureDetector.setIsLongpressEnabled(false);
onSigleTapUp(单击)、onFling(快速滑动)、onScroll(拖动)、onLongPress(长按)和onDoubleTap(双击)。如果监听滑动相关的建议自己在onTouchEvent中实现,如果要监听双击这种行为的话,呢么使用GestureDetector。
- Scroller
弹性滑动