Monday, July 8, 2013

Android 學習筆記 2013-07-05 / Multithread(run()) 與 layout / DDMS / getSharedPreferences

[1] Timer和介面 - Multithread(run()) 與 layout的連結
一般我們不能直接在multithread實作的run()的function裡面進行layout介面的改變
ex.
private TimerTask timerTask = new TimerTask() {
    public void run() {
        txtClock.setText("00:00"); //在這裡更改layout介面是違法的喔!
    }
};
解決方法請使用Handler接收由thread裡面傳出的訊息Message
ex.
private TimerTask timerTask = new TimerTask() {
    public void run() {
        Message message = new Message();
        message.what = 送出訊息;
        handler.sendMessage(message);
    }
};
然後再由Handler接收訊息
private Handler 變數 = new Handler() {
    public void handlerMessage(Message msg) {
        super.handlerMessage(msg);
        switch(msg.what){
        case 接收訊息:
            程式碼
            break;
        }
    }
};

[2] DDMS全名是Dalvik Debug Monitor Server, 要開啟此模式請在Eclipse右上角有個小圖標, 滑鼠滑過去顯示為Open Perspective, 點下去後選擇DDMS!我們可以從這裡用file explorer看看模擬器裡面的資料夾長甚麼樣, 也可進行匯出匯入以及刪除檔案的功能

[3] getSharedPreferences是"產生" SharedPreferences 物件
要放資料到SharedPreferences 物件的方法如下
SharedPreferences preferences = getSharedPreferences("preFile", MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putString("NAME", "Sally");
aditor.commit();
如果以匿名方式寫如下...
SharedPreferences preferences = getSharedPreferences("preFile", MODE_PRIVATE);
preferences.edit().putString("NAME", "Sally").commit();

讀取方法如下...
SharedPreferences preferences = getSharedPreferences("preFile", MODE_PRIVATE);
String readName = preferences.getString("NAME", "unknown"); // unknown在NAME這個key裡面沒有值的時候顯示

移除方法如下...
SharedPreferences preferences = getSharedPreferences("preFile", MODE_PRIVATE);
preferences.edit().remove("NAME").commit();
如果輸入preferences.edit().clear().commit();會清除所有資料!

No comments:

Post a Comment