Android基础整理(一)
2015-08-30 09:08
555 查看
android开发中常用的命令
android中提供的压力测试的工具:
android中进行单元测试
main方法不能用,因为android程序需要在dalvike虚拟机中运行,如果直接main执行,是用的jvm虚拟机
同样的原因,@Test也不能用
如果想在android中执行单元测试:
在清单文件中声明使用如下的指令集:
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="要测试的程序包名" android:label="Tests for My App" />
在清单文件中声明要使用jar包: 在<application>下配置<uses-library android:name="android.test.runner" />
写一个测试类继承AndroidTestCase,在这个类中写测试方法 这个方法必须是共有的无参非静态无返回的方法
文件存储
1.操作手机内部存储中的文件
可以使用流的方式直接操作文件
路径最好不要写死,一旦写死当修改应用包名时程序中的路径也跟着要修改
可以通过如下的方法动态获取路径:
getFilesDir
会获取/data/data/[包名]/files 目录,这个目录下存储的内容会有保障一直存在
getCacheDir
会获取/data/data/[包名]/cache 目录,这个是缓存目录,目录下存储的内容随时可能被回收,一般放置可有可无的缓存文件.虽然系统会在空间不足时帮我们回收次文件夹下的内容,但是android推荐如果程序员明确的直到这个文件夹下的文件已经不需要时,应该立即手动删除.
2.操作外部存储空间(SDCARD)中的文件:
(1)写入sdcard需要声明权限
(2)默认情况下读取sd卡是不需要声明权限,但是在高版本的android中在开发者选项中提供了开去读sd卡保护的选项,虽然这个选项在很多手机中是不起作用的但是部分手机是可以用的,为了防止无法读取sd卡的问题,通常我们在加上sd卡的写权限时会一起加上读取sd卡权限
(3)/mnt/sdcard 不同的厂商生产的手机sdcard的目录可能不同,不能写死,需要通过 Environment.getExternalStorageDirectory()获取
(4)由于sd卡是可以卸载的在操作之前最好检查sd卡是否插入并处于可操作的状态
String stat = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(stat)){}else{}
3.android提供的读写文件的快捷方法
FileInputStream in = Context.openFileInput(name); -- 直接操作/data/data/[包名]/files目录下的文件流
FileOutputStream out = Context.openFileOutput(name, mode); -- 直接操作/data/data/[包名]/files目录下的文件流
MODE_PRIVATE -- 只有当前应用能够访问,路人无法访问,并且如果之前有这个文件,再往里写入数据,数据会覆盖
MODE_APPEND -- 只有当前应用能够访问,路人无法访问,并且如果之前有这个文件,再往里写入数据,数据会追加
MODE_WORLD_READABLE -- 当前应用能够访问这个文件,另外其他应用可以读这个文件
MODE_WORLD_WRITEABLE -- 当前应用能够访问这个文件,另外其他应用可以写这个文件
4.android内部的文件访问权限:
android底层是linux,沿用了linux的文件权限系统
通过十个二进制位表示文件的权限
1位表示类型 -- 文件 文件夹 超链接
2--4 表示当前用户对当前文件的访问权限 可读 可写 可执行
5--7 表示当前用户组中的用户对当前文件的访问权限 可读 可写 可执行
8--10 表示其他用户(路人)对当前文件的访问权限 可读 可写 可执行
SharedPreferences -- 非常便于保存键值对信息,通常用来作为程序的配置信息存储的方式,本质是一个xml文件,保存在/data/data/[包名]/shared_prefs文件夹中
例如保存音量大小
创建Sharedprefrence :sp = getSharedPreferences("voiceConfig", MODE_PRIVATE);
写入数据:
Editor editor = sp.edit();
editor.putXXX(name, value);
editor.commit();
读取数据:
sp.getInt(name, defaultValue);
adb.exe (android debug bridge) 链接电脑和手机 进行数据传输 adb devices 列出当前设备 adb pull <remote> <local> adb push <local> <remote> adb shell 挂载到linux的空间 adb install xxx.apk 如果有多个设备,我们可以指定设备 adb uninstall com.xx.xxx.xxxx 卸载应用 adb kill-server -- 杀死调试桥 adb start-server -- 开启调试桥
android中提供的压力测试的工具:
adb shell monkey 5000 这个太恶心.了 手机快点爆了(后面的数字是指点多少下)
android中进行单元测试
main方法不能用,因为android程序需要在dalvike虚拟机中运行,如果直接main执行,是用的jvm虚拟机
同样的原因,@Test也不能用
如果想在android中执行单元测试:
在清单文件中声明使用如下的指令集:
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="要测试的程序包名" android:label="Tests for My App" />
在清单文件中声明要使用jar包: 在<application>下配置<uses-library android:name="android.test.runner" />
写一个测试类继承AndroidTestCase,在这个类中写测试方法 这个方法必须是共有的无参非静态无返回的方法
文件存储
1.操作手机内部存储中的文件
可以使用流的方式直接操作文件
路径最好不要写死,一旦写死当修改应用包名时程序中的路径也跟着要修改
可以通过如下的方法动态获取路径:
getFilesDir
会获取/data/data/[包名]/files 目录,这个目录下存储的内容会有保障一直存在
getCacheDir
会获取/data/data/[包名]/cache 目录,这个是缓存目录,目录下存储的内容随时可能被回收,一般放置可有可无的缓存文件.虽然系统会在空间不足时帮我们回收次文件夹下的内容,但是android推荐如果程序员明确的直到这个文件夹下的文件已经不需要时,应该立即手动删除.
2.操作外部存储空间(SDCARD)中的文件:
(1)写入sdcard需要声明权限
(2)默认情况下读取sd卡是不需要声明权限,但是在高版本的android中在开发者选项中提供了开去读sd卡保护的选项,虽然这个选项在很多手机中是不起作用的但是部分手机是可以用的,为了防止无法读取sd卡的问题,通常我们在加上sd卡的写权限时会一起加上读取sd卡权限
(3)/mnt/sdcard 不同的厂商生产的手机sdcard的目录可能不同,不能写死,需要通过 Environment.getExternalStorageDirectory()获取
(4)由于sd卡是可以卸载的在操作之前最好检查sd卡是否插入并处于可操作的状态
String stat = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(stat)){}else{}
3.android提供的读写文件的快捷方法
FileInputStream in = Context.openFileInput(name); -- 直接操作/data/data/[包名]/files目录下的文件流
FileOutputStream out = Context.openFileOutput(name, mode); -- 直接操作/data/data/[包名]/files目录下的文件流
MODE_PRIVATE -- 只有当前应用能够访问,路人无法访问,并且如果之前有这个文件,再往里写入数据,数据会覆盖
MODE_APPEND -- 只有当前应用能够访问,路人无法访问,并且如果之前有这个文件,再往里写入数据,数据会追加
MODE_WORLD_READABLE -- 当前应用能够访问这个文件,另外其他应用可以读这个文件
MODE_WORLD_WRITEABLE -- 当前应用能够访问这个文件,另外其他应用可以写这个文件
4.android内部的文件访问权限:
android底层是linux,沿用了linux的文件权限系统
通过十个二进制位表示文件的权限
1位表示类型 -- 文件 文件夹 超链接
2--4 表示当前用户对当前文件的访问权限 可读 可写 可执行
5--7 表示当前用户组中的用户对当前文件的访问权限 可读 可写 可执行
8--10 表示其他用户(路人)对当前文件的访问权限 可读 可写 可执行
SharedPreferences -- 非常便于保存键值对信息,通常用来作为程序的配置信息存储的方式,本质是一个xml文件,保存在/data/data/[包名]/shared_prefs文件夹中
例如保存音量大小
创建Sharedprefrence :sp = getSharedPreferences("voiceConfig", MODE_PRIVATE);
写入数据:
Editor editor = sp.edit();
editor.putXXX(name, value);
editor.commit();
读取数据:
sp.getInt(name, defaultValue);
sp = getSharedPreferences("voiceConfig", MODE_PRIVATE); cb_openVoice = (CheckBox) findViewById(R.id.cb_openVoice); sb_voice = (SeekBar) findViewById(R.id.sb_voice); /** * 读取sp,如果有值,拿出来赋值 */ boolean openVoice = sp.getBoolean("openVoice", false); cb_openVoice.setChecked(openVoice); int progress = sp.getInt("voice", 50); sb_voice.setProgress(progress); /** * 用sp记录是否开启了声音 */ cb_openVoice.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Editor editor = sp.edit(); editor.putBoolean("openVoice", isChecked); editor.commit(); } }); /** * 用sp记录声音的大小 */ sb_voice.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) { Editor editor = sp.edit(); editor.putInt("voice", progress); editor.commit(); } @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } });
相关文章推荐
- Android中的DatePickerDiaolog的使用
- Android的JSON数据解析
- ubuntu14.10上编译Android5.0.2源码
- android canvas探究
- Android test---monkey
- Vysor让你在电脑上完全控制android手机屏幕镜像(译)
- Android Studio中引用.so文件的正确位置
- Android-Service(系统服务概述 和 桌面浮悬窗,进程管理 等 实例)
- Android修改system只读权限
- Android正式签名打包的过程
- listview实现自动向上滚动,快速滚动,和滚动条的一些设置
- 高仿qq照片选择界面,哈哈
- android-XML解析之pull类型代码解析
- android在线API地址
- android的权限问题
- Android打包出错export aborted because fatal lint errors were found
- Android M新特性
- Android中常用的工具类
- Android Api Demos登顶之路(五十三)Service Foreground Service Controller
- android activity 启动过程分析(source code 4.4)