1.XML
布局文件,手机在运行java文件的时候,会在内容视图代码行得知要去运行相应的xml文件,获得布局,控件等。
2.AndroidManifest.xml文件
3.Service组件
service是在安卓后台运行的组件,能够在后台做一些耗时较长的事情,当程序退出到后台时,也可以让service继续运行。
4.
可继承的通用activity基础模板
5.Api
API 是用于构建应用程序软件的一组子程序定义,协议和工具。一般来说,这是一套明确定义的各种软件组件之间的通信方法。
6.Bean
在Android开发中,使用Bean类最多的场景是从网络获取数据,将数据以Bean类组织,Bean类中的数据用于填充UI界面中的控件。
javaBean,在一般的程序中,我们称它为数据层,就是用来设置数据的属性和一些行为,然后会提供获取属性和设置属性的getXXX和setXXX方法,JavaBean是一种JAVA语言写成的可重用组件。
所以,我们一般利用bean类来存放一些特定的属性或行为,而不存放值,这样我们就能多次调用bean类中的属性并赋值使用,实现重复使用的功能。综上,这个Bean类可以作为一个信息中转站,通过在别的地方通过setXXX方法设置bean中的属性或者方法值,再通过getXXX方法调用具体的值来完成构建UI。
7.Vm文件
Model:它仅仅关注数据本身,不关心任何行为。
View:负责接收用户输入、发起数据请求及展示结果页面。
ViewModel:负责业务逻辑,实现 View 与 Model 的双向绑定
Activity/Fragment 通过观察 ViewModel 中的 LiveData 来更新界面。
Repository 通过更新 ViewModel 中的 LiveData 来更新界面。
8.关于model(数据模式)
Q:为什么数据获取不应该写在业务逻辑里?
A:在业务里做网络请求,处理回调数据,这种方法存在几个问题:
①多个页面请求同一接口时,处理代码会重复
②添加数据缓存功能会影响业务代码
③无法进行单元测试
而独立出 Model 层可以解决上述问题,使代码更易读且便于扩展,还能添加单元测试提高软件质量,对于 App 的长期发展有很大的好处。
Model 层应该包括什么内容?
数据获取的方法:包括网络请求和读取本地文件、数据库等
数据处理的方法:Model 层提供的数据应该是业务中直接可用的,这样就能在测试中区分开错误的来源是数据还是逻辑 bug
实体类
项目中的实例:
@Data
public class ReagentInBillReq {
// 预入库单号-创建草稿必填
private String preInBillCode;
// 如果操作的是草稿,则必传,用于更新状态
private String tempInBillCode;
// 入库单种类:1 一级中心入库单, 2 二级中心入库单,3 科室入库单
private String billType;
// 库存种类:1-一级中心库汇总单;2-二级库科室汇总单;3-二级库中心库库存
private String stockType;
// 添加种类:1 一级建码入库,2 二级建码入库 3 一级扫码入库,4 二级扫码入库
private String createType;
// 单据状态
// 0-草稿;1-入库
private String billStatus;
// 制单人
private String billCreator;
private String remark;
private List<ReagentInBillMessReq> inBillMessList;
}
9.适配器模式,适配器Adapter
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够放在一起工作(也有人把这种模式称为叫做包装(Wrapper)模式)。适配器模式有三种角色:
Target(目标),这就是所期待得到的接口。
Adaptee(源),现有需要适配的接口。
Adapter(适配器),适配器类是本模式的核心。适配器把Adaptee转换成Target。
public class ItemRetireAdapter extends BaseAdapter {
Context mContext;
private List<ReagentDetailVm> obj;
public void setItemsList(List<ReagentDetailVm> obj){
this.obj=obj;
}
public ItemRetireAdapter(Context context){
mContext=context;
}
@Override
public int getCount() {
return obj==null?0:obj.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ReagentDetailView itemView = null;
if(view == null){
itemView = new ReagentDetailView(mContext);
view = itemView.getmView();
view.setTag(itemView);
}else{
itemView = (ReagentDetailView) view.getTag();
}
itemView.bind(obj.get(i),i);
return view;
}
public void remove(int position){
// obj.remove(position);
// notifyDataSetChanged();
EventBus.getDefault().post(new MessageEvent(""));
}
}
10.Fragment(片段)
fragment表示activity的某部分界面或者行为,必须与activity配合使用,它的生命周期也依赖于activity。那么它有什么用呢?
①处理在不同屏幕上显示的UI问题
②activity模块化,把业务逻辑放在对应的fragment中处理
③一个fragment可以被不同的activity使用
//添加按钮
private void addBtn() {
list.clear();
for (int i = 0; i < Constance.btnNameList.length; i++) {
addBtn2List(Constance.btnNameList[i], Constance.btnImgList[i]);
}
adapter.setList(list);
adapter.notifyDataSetChanged();
}
11.util,即utility
util类是工具包类,这个工具类包含了我们一些公用的方法
12.res
Android项目中的res(Resources)文件夹是项目的资源配置路径,Android系统会根据请求的资源:res——>存放文件类型文件目录+资源限配符——>文件名
详情可参考https://blog.csdn.net/Future_One/article/details/104658988/?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%AE%89%E5%8D%93%E5%BC%80%E5%8F%91res&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-104658988.142v11control,157v13new_style1&spm=1018.2226.3001.4187