我所寫的這些核心基礎,都是老師課堂上要求熟練掌握的東西,一些只需要瞭解的東西,我沒有去寫,以後會陸
續補充。
Android下的logcat以及斷點調試
logcat是Android中一個命令行工具,可以用於得到程序的log信息。用法一般爲
<span style="font-size:18px;">Log.i(TAG,"");</span>
引號中寫需要輸出的信息。至於TAG,個人習慣把TAG定義爲一個全局變量,然後用類名作爲內容。例如
<span style="font-size:18px;">private String TAG = "MainActivity";</span>
斷點調試中,打斷點只需要在一行的最前面雙擊即可。 斷點一半打在 出錯行的上一行,然後使用debug as進
入調試模式。然後進行調試程序。
需要注意的一點就是,調試完成之後一定要記住放行!!!
Android單元測試
單元測試:主要是對業務邏輯進行測試
Android 單元測試
1 清單文件中應用節點內調用測試庫,如下圖所示:
2 在應用節點外部配置測試啓動類,如下圖所示:
3 創建一個測試類繼承TestCase類,如下圖所示:
4 編寫測試方法,如下圖所示:
5 在Outline 選擇對應的方法,然後右鍵run as -> android junit case
在開發過程中,編寫測試程序一定要嚴謹,切記!!
單元測試分兩種,第一種是測試執行過程是否正確,第二種是測試返回的結果是否正確,那麼測試返回結果的單
元測試方法一般採用斷言測試,核心方法如下(方法是重載的,可以測試很多種情況):
Assert.assertEquals(expected, actual)
其中expected爲期望值,actual爲實際值。
文件的訪問權限
關於Linux權限,我這邊就先不寫太多了,貼張圖吧,之後會有一天的時間專門來詳細來講Linux系統,因爲我自
己之前接觸過,到那天在詳細寫吧。
Android下的數據讀取和保存
關於這個部分,我還是感覺寫在案例裏面比較方便查閱,因爲是以一個小案例來體現的。詳情請參見案例部
保存數據到sdcard 以及讀取sdcard的數據
這個其實跟案例用戶登錄有些相似,只是把保存的方法改變了下,變成了把數據保存到sdcard上,讀取也是從
sdcard上進行讀取。就不再另起案例了,直接改下上面的核心代碼吧。佈局什麼的都是浮雲,實現的核心代碼如下。
先說一下如下的兩個方法:
//獲取sdcard的狀態
String state = Environment.getExternalStorageState();
//獲取到sdcard的文件目錄
File directory = Environment.getExternalStorageDirectory();
然後上保存數據到sdcard的核心代碼:
<span style="white-space:pre"> </span>//判斷sdcard是否存在
<span style="white-space:pre"> </span>if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
<span style="white-space:pre"> </span>File file = new File(Environment.getExternalStorageDirectory(),"user.txt");
<span style="white-space:pre"> </span>FileWriter fw = new FileWriter(file);
<span style="white-space:pre"> </span>fw.write(name);
<span style="white-space:pre"> </span>fw.close();
<span style="white-space:pre"> </span>Toast.makeText(this, "用戶名保存成功", 0).show();
}else{
<span style="white-space:pre"> </span>Toast.makeText(this, "sdcard不存在", 0).show();
}
最後是從sdcard讀取數據的代碼,也就是用戶名的回顯:
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File file = new File(Environment.getExternalStorageDirectory(),"user.txt");
if(file.exists()){
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String content = br.readLine();
et_name.setText(content);
et_name.setSelection(content.length());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
期間報了這樣一個錯誤如下:
07-08 03:38:58.498: W/System.err(31743): java.io.FileNotFoundException: /mnt/sdcard/user.txt: open failed: EACCES (Permission denied)
因爲往外部寫入時候是需要添加權限的,去清單配置文件中添加寫入外部設備的權限即可解決。
幾個常見獲取目錄的Api
<span style="white-space:pre"> </span>//文件常用的api
<span style="white-space:pre"> </span>//openFileInput(""); //獲取文件的輸入流
<span style="white-space:pre"> </span>//openFileOutput(name, mode);//獲取文件的輸出流
File filesDir = getFilesDir();// /data/data/packagename/files
File cacheDir = getCacheDir();//獲取緩存目錄 /data/data/packagename/cache
try {
FileInputStream fis = openFileInput("name.txt");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while((len = fis.read(buffer)) != -1){
bos.write(buffer, 0, len);
}
String content = bos.toString();
et_name.setText(content);
et_name.setSelection(content.length());
//關流
bos.close();
fis.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
上面存儲數據到sdcard的代碼可以簡化爲:
if(cb.isChecked()){
try {
//文件輸出流 在/data/data/包名/files文件/name.txt 1 創建files文件夾 2 創建mm.txt文件
FileOutputStream fos = openFileOutput("name.txt", Context.MODE_PRIVATE);
//寫數據
fos.write(name.getBytes());
//關流
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
還有三個知識點沒寫完,感覺長了看起來不太方便,就先寫這麼多吧,其他知識點留到下一篇,明天又開始上課
咯。努力,加油!!