Android知識點(一)

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
    彈性滑動
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章