癡漢學android,胡來胡讀胡記錄

Handler 一個線程只有啓動了Looper,才能在其中創建Handler的對象,進行消息處理,否則程序會出現異常。
啓動Looper通過調用靜態方法Looper.prepare();來實現。
一個線程只能有一個Looper和一個MessageQueue,但是可以有多個Handler對象。程序中可以使用不同的Handler對象處理不同的消息。

Timer定時器也是常用的實現多線程程序的方式,但是在定時器中也不能直接進行UI操作,需要通過Handler類,Activity.runOnUiThread(Runnable)方法,或者View.post(Runnable)方法等方式來間接進行UI操作。

AsyncTask類提供的一個輕量級的基於多線程的後臺異步工作處理的類。後臺工作比較簡單,只需要向UI線程傳遞一些簡單數據時可以使用AsyncTask類。

private static final long serialVersionUID = 1L;
如果你的類Serialized存到硬盤上面後,可是後來你卻更改了類的field(增加或減少或改名),當你Deserialize時,就會出現Exception的,這樣就會造成不兼容性的問題。
但當serialVersionUID相同時,它就會將不一樣的field以type的預設值Deserialize,可避開不兼容性問題。

WebView v = (WebView) findViewById(R.id.view);
        v.setWebViewClient(new WebViewClient(){
            public boolean shouldOverrideUrlLoading(WebView view,String url){
                view.loadUrl(url);
                return super.shouldOverrideUrlLoading(view, url);
            }
        });
        v.loadUrl("http://blog.csdn.net/jijiaxin1989/article/details/44178489");

setWebViewClient()方法用於指定loadUrl()方法打開頁面的載體。如無此行代碼程序也能運行,但是默認的初始頁面index.html頁面會由WebView組件轉交給android系統默認瀏覽器打開。加上次行代碼後,頁面將由webview組件本身打開。

1、改變標題內容:public void setTitle (CharSequence title)
2、隱藏標題:requestWindowFeature(Window.FEATURE_NO_TITLE);
3、隱藏標題和最上面的電池電量及信號欄(全屏):

public void setFullscreen() { 
requestWindowFeature(Window.FEATURE_NO_TITLE); 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 

4自定義標題:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); 
//預先設置允許改變的窗口狀態,需在 setContentView 之前調用,否則設置標題時拋運行時錯誤。
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.custom_title); 
//標題區域可設置爲 layout ,如此可以有豐富的展現方式 

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, 
R.layout.custom_title_1); 
}

res\layout\custom_title_1.xml 包含一個TextView 用於顯示標題。Android可以把標題做爲一個layout來展示,具有很好的擴展性。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screen"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical">
    <TextView android:id="@+id/left_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="@string/custom_title_left" />
</RelativeLayout>

監聽按鍵,返回鍵攔截,返回前一個webview頁面

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

數據解析
json數據是以鍵值對形式存放的字符串,xml數據則類似於HTML,是以標籤形式提供的文本。
json是目前常用的輕量級網絡數據傳輸格式,android api中直接支持對JSON數據的處理。json解析中常用的類有JSONObject、JSONArray、JSONStringer、JSONTokener等。
對於格式較複雜的數據,仍然需要使用xml格式
android api中提供瞭如下幾種處理xml數據的方法:
DOM方式:基於樹的解析與處理
SAX方式:基於流的解析與處理(推方式)
XML PULL方式:基於流的解析與處理(拉方式)
xml數據的組織形式就是樹狀結構,
DOM方式處理數據就是先讀取所有的xml數據,將其構造成一棵樹,然後通過一些方法進行數據的處理
SAX並非事先把所有的xml節點都讀入內存,再進行數據處理,而是一邊讀一邊對所需要的數據進行處理。基於事件觸發的,等帶着把數據推送出去。
XML PULL採用主動拉去的方式。

webservice作爲一個額成熟技術,提供了跨平臺的信息交互方法,目前是異構網絡主流的交互技術,使用Ksoap2第三方包。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章