安卓 常識 小結

剛剛嵌入式轉移動應用,因爲沒有經驗就到了一個剛剛創業的外包公司,工做很累沒有多少空餘時間,而後看到不少博客都寫得很牛逼,就想本身何時能夠那樣,如今也抽點時間總結下安卓的基礎常識。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動畫,傳統的動畫方法,經過順序的播放排列好的圖片來實現,相似電影。


Handler的兩種形式

由於安卓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

相關文章
相關標籤/搜索