《疯狂Android讲义》笔记

一、Android基础:

1、Android平台架构:
emb108.jpg

应用程序层、应用程序框架、函数库、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键值对的形式存储

2、File存储:
3、SQLite数据库:

六、ContentProvider实现数据共享:

你可能感兴趣的:(《疯狂Android讲义》笔记)