Native Service,这是Android系统里的一种特色,就是通过C++或是C代码写出来的,供Java进行远程调用的Remote Service,因为C/C++代码生成的是Native代码(机器代码),于是叫Native Service。
native服务就是用c++写的系统服务,通过init进程启动,可以实现binder接口供client调用。
JAR包 类似于动态链接库.so。
content provider 提供一个URI(content:com.abc.123/people) 与数据库相连实现增删改查,暴露给其他应用或进程。通过Resulver访问。
adb root 获取权限
adb pull 从android 设备下载文件
adb shell 进入设备命令行
adb install abc.apk 安装apk
adb devices 确认是否连接
adb shell pm list package 列出所有的应用的包名 (-s:列出系统应用 -3:列出第三方应用 -f:列出应用包名及对应的apk名及存放位置 -i:列出应用包名及其安装来源)
adb shell am start +包名/.Activity (要启动的Activity)
例如adb shell am start com.android.settings/.MainActivity
关闭App
cmd命令行中执行 adb shell am force-stop app包名
例如:adb shell am force-stop com.android.settings关闭系统设置;
cmd命令行中执行 adb shell pm clear app包名
例如adb shell pm clear app com.android.settings 关闭系统设置
-
MVC (Model View Controller)
MVC 模式将程序分为三个部分:模型(Model)、视图(View)、控制器(Controller)。
-
Model 模型层: 业务数据的处理和存储,数据更新后更新;
-
View 视图层: 人机交互接口,一般为展示给用户的界面;
-
Controller 控制器层 : 负责连接 Model 层和 View 层,接受并处理 View 层触发的事件,并在 Model 层的数据状态变动时更新 View 层;
-
MVC 模式的目的是通过引入 Controller 层来将 Model 层和 View 层分离,分层的引入是原来大锅烩方式的改进,使得系统在可维护性和可读性上有了进步。
-
MVC 模式提出已经有四十余年,MVC 模式在各个书、各个教程、WIKI 的解释有各种版本,甚至 MVC 模式在不同系统中的具体表现也不同,这里只介绍典型 MVC 模式的思路。
典型思路是 View 层通过事件通知到 Controller 层,Controller 层经过对事件的处理完成相关业务逻辑,要求 Model 层改变数据状态,Model 层再将新数据更新到 View层。示意图如下:
MVP (Model View Presenter)
MVP 模式将程序分为三个部分:模型(Model)、视图(View)、管理层(Presenter)。
-
Model 模型层: 只负责存储数据,与 View 呈现无关,也与 UI 处理逻辑无关,发生更新也不用主动通知 View;
-
View 视图层: 人机交互接口,一般为展示给用户的界面;
-
Presenter 管理层 : 负责连接 Model 层和 View 层,处理 View 层的事件,负责获取数据并将获取的数据经过处理后更新 View;
-
MVC 模式的 View 层和 Model 层存在耦合,为了解决这个问题,MVP 模式将 View 层和 Model 层解耦,之间的交互只能通过 Presenter 层,实际上,MVP 模式的目的就是将 View 层和 Model 层完全解耦,使得对 View 层的修改不会影响到 Model 层,而对 Model 层的数据改动也不会影响到View 层。
典型流程是 View 层触发的事件传递到 Presenter 层中处理,Presenter 层去操作 Model 层,并且将数据返回给 View层,这个过程中,View 层和 Model 层没有直接联系。而 View 层不部署业务逻辑,除了展示数据和触发事件之外,其它时间都在等着 Presenter 层来更新自己,被称为「被动视图」。
示意图如下:
MVVM (Model View ViewModel)
MVVM 模式将程序分为三个部分:模型(Model)、视图(View)、视图模型(View-Model)。
和 MVP 模式类似,Model 层和 View 层也被隔离开,彻底解耦,ViewModel 层相当于 Presenter 层,负责绑定 Model 层和 View 层,相比于 MVP 增加了双向绑定机制。
结构图如下: