Android核心基礎二

我所寫的這些核心基礎,都是老師課堂上要求熟練掌握的東西,一些只需要瞭解的東西,我沒有去寫,以後會陸

補充。

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下的數據讀取和保存


關於這個部分,我還是感覺寫在案例裏面比較方便查閱,因爲是以一個小案例來體現的。詳情請參見案例部

分的用戶登錄。附上傳送門http://blog.csdn.net/jack522703074/article/details/37729029

保存數據到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();
		}
	}


還有三個知識點沒寫完,感覺長了看起來不太方便,就先寫這麼多吧,其他知識點留到下一篇,明天又開始上課

咯。努力,加油!!


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