剛剛嵌入式轉移動應用,因爲沒有經驗就到了一個剛剛創業的外包公司,工做很累沒有多少空餘時間,而後看到不少博客都寫得很牛逼,就想本身何時能夠那樣,如今也抽點時間總結下安卓的基礎常識。java
安卓有四大組件
linux
1,Activity :android
2,Service 服務數據庫
3,BroadcastReceive廣播接收器:json
4,Content Provider內容提供者緩存
activity有能夠分爲 activity和fragmentactivty,fragmentactivty出現是爲了解決activity切換時費時和數據恢復麻煩而出現的,在這兩個組件中經常使用的生命週期方法爲oncreate()、ondestroy(),前者進行界面的初始化和數據加載,後者用於數據刪除回收內存等。安全
數據傳遞與保存網絡
多個activity切換過程可使用intent傳遞信息也可使用全局變量Application,保存當前activity數據則使用Activity的onSaveInstanceState()和onRestoreInstanceState()方法,由系統銷燬一個Activity時,onSaveInstanceState()會被調用。可是當用戶主動去銷燬一個Activity時,例如在應用中按返回鍵,onSaveInstanceState()就不會被調用。一般onSaveInstanceState()只適合用於保存一些臨時性的狀態(內存不足、用戶直接按Home鍵),而onPause()適合用於數據的持久化保存。另外,當屏幕的方向發生了改變,能夠重寫Activity的 onSaveInstanceState() 和onRestoreInstanceState()方法,另外也可使用全局變量用於數據保存。app
settag()/getTag() 用於 listview 傳遞位置值的,ide
v.getTag().toString; 字符型
(Integer)v.getTag(); 整型 Integer.parseInt(v.getTag().toString())
Android的數據存儲方式
一.SharedPreferences方式
二.文件存儲方式
三.SQLite數據庫方式
四.內容提供器(Content provider)方式
五. 網絡存儲方式
通常網絡數據下載以後,須要緩存在本地,主要使用sharedPreferences和SQLite和文件
android中的動畫兩種
一種是Tween動畫、還有一種是Frame動畫。Tween動畫,這種實現方式可使視圖組件移動、放大、縮小以及產生透明度的變化;另外一種Frame動畫,傳統的動畫方法,經過順序的播放排列好的圖片來實現,相似電影。
由於安卓ui中處理控件只容許在主線程中,因此須要handler和message
class MyHandler extends Handler { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if(msg.what==1) { System.out.println(msg.arg1+"handle"); bar.setProgress(msg.arg1); } } } MyHandler handler; Message message=new Message(); message.what=1; handler.sendMessage(message); 方法二 Class a implements Callback { Handler mhandler; mhandler = new Handler(this); //這個要加上 B b = new B(mhandler); b.bb(); @Override public boolean handleMessage(Message message) { switch (message.what) { case 10: System.out.println("shi"); break; } return false; } } Class B { Handler handler; public B(Handler handler){ this.handler = handler; } void bb(){ Message msg = new Message(); msg.what = 10; handler.sendMessage(msg); } }
json數據解析
NetJsonData NetJson = new NetJsonData(); JSONObject jsonObj = new JSONObject(data); NetJson.szReuslt = jsonObj.getString(KEY_RESULT); NetJson.szErrDesc = jsonObj.getString(KEY_ERRDESC); NetJson.szApiType = jsonObj.getString(KEY_API_TYPE); if (jsonObj.length() <= 3) return NetJson; JSONArray jsonList = jsonObj.getJSONArray("0"); JSONObject tmpJson = null; UserTimeLines tmpDetail = null; NetJson.usertiemline = new ArrayList<UserTimeLines>(); for (int i = 0; i < jsonList.length(); i++) { tmpJson = jsonList.getJSONObject(i); if (tmpJson == null) continue; tmpDetail = new UserTimeLines(); tmpDetail.userHead = tmpJson.getString("UserHeadPicFileName"); NetJson.usertiemline.add(tmpDetail); } return NetJson;
安卓每一個app對應一個linux中的用戶,pid,每一個app對應一個dmv,由守護線程負責維護。保證app安全獨立
安卓資源文件分佈圖
安卓進程狀態
安卓單位
String.Format("qw%02d.png",1);
這個就是輸出 qw01.png 自動從%後面替換後面的數字 02表示兩位不足補0