一、Android基础:
1、Android平台架构:
应用程序层、应用程序框架、函数库、Android运行时、Linux内核
2、AVD用法:
创建AVD设备:
android create avd -n -t -b -p -s <选择AVD皮肤>
例如:
android create acd -n crazyit -t 21 -b armeabi-v7a
3、ADB用法:
adb devices 查看运行的模拟器;
adb push d:\abc.txt /sdcard/ 将电脑文件拷贝到模拟器;
adb pull /sdcard/xyz.txt d:\ 将模拟器文件复制到电脑;
adb shell 启动模拟器shell窗口;
adb install [-r] [-s] 安装apk;r表示重新安装,s表示安装到sd卡;
adb uninstall [-k] 删除;k表示只删除应用,但保留数据;
4、AndroidManifest.xml
- 应用程序包名,作为该应用的唯一标识!
- 应用程序包含的组件,如Activity、Service、BroadcastReceiver和ContentProvider。
5、使用命令对APK签名:
1.创建Key store库。
jdk安装目录下的bin子目录中提供了keytool.exe工具来生成数字证书。
keytool -genkeypair -alias crazyit -keyalg RSA -validity 400 -keystore crazyit.jks
2、在Android Studio的build——>Make Project即可生成未签名的APK安装包;
在app\build\outputs\apk路径下即可找到app-release-unaligned.apk一个文件。
3、使用jarsigner命令对未签名的APK安装包进行签名。
jdk安装目录下的bin子目录下提供了jarsigner.exe工具进行签名。命令行输入:
jarsigner -verbose -keystore crazyit.jks -signedjar helloword.apk app-release-unaligned.apk crazyit
二、事件处理:
1、事件处理机制:
- 基于监听的事件处理;
- 基于回调的事件处理;
2、监听器类:
- 内部类作为事件监听器类;
- 外部类作为事件监听器类;(缺点:不利于调高程序内聚性;外部类不能自由访问GUI界面组件,编程不够整洁)
- Activity本身作为事件监听器类;(缺点:可能造成程序结构混乱,Activity主要职责是完成界面初始化工作,但此时还需包含事件处理器方法,从而引起混乱。)
例如: public class MainActivity extends Activity implements OnClickListener{}
- 匿名内部类作为事件监听器类;(最合适,最广泛)
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
//事件处理
}
});
3、Configuration类:
描述手机设备上的配置信息,常见包含:横竖屏、键盘类型、网络码等。
4、Handler消息传递机制:(难点)
- Handler类的两个主要作用:
1)在新启动的线程中发送消息;
2)在主线程中获取、处理消息; - 待举例
5、异步任务(AsyncTask):
耗时操作不能放在UI线程中执行!
- 解决新线程不能更新UI组件问题:
1)使用Handler实现线程之间的通信;
2)Activity.runOnUIThread(Runnable);
3)View.post(Runnable);
4)View.postDelayed(Runnable,long); - AsyncTask更轻量级,适合简单的异步处理;
1)创建AsyncTask子类;
2)实现AsyncTask的如下方法:
- doInBackground(Params...):后台线程将要完成的任务;
- onProgressUpdate(Progress... values):在DoInBackground()方法中调用publishProgress()方法更新任务的* 执行进度后,将会触发此方法;
- onPreExecute():在执行后台耗时操作前被调用;
- onPostExecute(Result result):doInBackground执行完之后将其返回值传至该方法。
3)调用AsyncTask子类的实例的execute(Params... params)开始执行耗时任务。
三、Activity:
1、生命周期:
OnCreate、OnStart、OnRestart、onResume、onPause、onStop、onDestroy
此处需要一个示意图。
2、Activity四种加载模式:
1)standard:标准模式,默认加载模式;
2)singleTop:Task栈顶单例模式;
当将要启动的目标已经位于Task栈顶时,系统不会重新创建目标Activity实例,而是直接复用已有的;但是如果不在栈顶,系统会重新创建实例,并加载到Task栈顶;
3)singleTask:Task内单例模式;
在同一个Task中只有一个此Activity实例,将要启动的Activity不存在时,系统创建并加入栈顶;已经位于栈顶,则痛singTop一致;已经存在但不位于栈顶,系统将会把位于该activity上面顶所有activity移出Task栈,从而使其转入栈顶;
4)singleInstance:全局单例模式;
系统保证无论从哪个Task中启动目标activity,只会创建一个目标activity实例,并会使用一个全新顶Task栈来加载该activity实例。若将要启动的目标activity不存在,系统会先创建一个新顶Task,在创建activity实例,并将其加入到新栈;若已经存在,则无论他位于哪一个应用程序中、位于哪个Task中,系统都会把该activity所在的Task转入前台,从而使其显示出来。
四、Fragment:(适应平板电脑)
1)Fragment虽然拥有自己的生命周期,但是必须被“嵌入”Activity中使用,并受activity生命周期控制。
2)创建Fragment需要实现三个方法:
onCreate()、onCreateView()、onPause()
五、android数据存储:
1、SharedPreferences:
key-value键值对的形式存储