您的位置:首页 > 移动开发 > Android开发

Android核心基础二

2014-07-12 22:29 447 查看
我所写的这些核心基础,都是老师课堂上要求熟练掌握的东西,一些只需要了解的东西,我没有去写,以后会陆

续补充。

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();
}
}


还有三个知识点没写完,感觉长了看起来不太方便,就先写这么多吧,其他知识点留到下一篇,明天又开始上课

咯。努力,加油!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: