美文网首页
Weather_APP项目实践中主要使用的技术

Weather_APP项目实践中主要使用的技术

作者: 黑铁选手 | 来源:发表于2021-03-26 15:10 被阅读0次

    技术

    JSON:一种轻量级的数据交换格式。有两种结构:键值对集合和无序的值列表
    主要5中数据形式:number、string、array、value、object

    JSON 语法规则

    JSON是一个标记符的序列。这套标记符包含六个构造字符字符串数字和三个字面名

    JSON是一个序列化的对象数组

    1. 六个构造字符

    begin-array = ws %x5B ws ; [ 左方括号

    begin-object = ws %x7B ws ; { 左大括号

    end-array = ws %x5D ws ; ] 右方括号

    end-object = ws %x7D ws ; } 右大括号

    name-separator = ws %x3A ws ; : 冒号

    value-separator = ws %x2C ws ; , 逗号

    2. 在这六个构造字符的前或后允许存在无意义的空白符(ws):

    ws = *(%x20 /; 空间

    %x09 /; 水平标签

    %x0A /; 换行或换行

    %x0D); 回程

    3.JSON的值:

    3.1 JSON的构成: ws ws [1]

    3.2 可以是对象数组数字字符串或者三个字面值(false、null、true)中的一个。值中的字面值中的英文必须使用小写。

    3.2.1对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的由逗号分割的键值对组成,

    {"name": "John Doe", "age": 18, "address": {"country"` `:"china","zip-code":"10000"``}}

    3.2.2数组是由方括号括起来的一组值构成,如:

    [3, 1, 4, 1, 5, 9, 2, 6]

    3.2.3 字符串与C或者Java的字符串非常相似。字符串是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

    3.2.4数字也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。

    适配器Adapter:适配器是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。

    Adapter(适配器):将各种数据以合适的形式显示到View上,提供给用户看
    MVC模式:M(model数据)->C(controller控制器 以什么方式显示到)->V(View视图、用户界面)


    适配器的继承结构

    实际开发中用到的Adapter:
    BaseAdapter:抽象类,实际开发中我们会继承这个类并且重写相关方法,用得最多的一个Adapter!
    ArrayAdapter:支持泛型操作,最简单的一个Adapter,只能展现一行文字~
    SimpleAdapter:同样具有良好扩展性的一个Adapter,可以自定义多种效果!
    SimpleCursorAdapter:用于显示简单文本类型的listView,一般在数据库那里会用到,不过有点过时, 不推荐使用!
    Adapter定义:
    继承 BaseAdapter (可在继承的时候指定泛型,扩展使用);
    重写四个基本方法:
    1、getCount():获取数据的总的数量,返回 int 类型的结果;
    2、getItem(int position) :获取指定位置的数据,返回该数据;
    3、getItemId(int position):获取指定位置数据的id,返回该数据的id,一般以数据所在的位置作为它的id;
    4、getView(int position,View convertView,ViewGroup parent):关键方法,用于确定列表项创建 ViewHolder (包含列表项的控件)
    ViewHolder减少findViewById()的使用以及避免过多的inflate view(加载视图)

    Fragment:一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity,又称作Activity片段。
    使用Fragment可以把屏幕划分成几块,然后进行分组,进行一个模块化管理。Fragment不能够单独使用,需要嵌套在Activity中使用,其生命周期也受到宿主Activity的生命周期的影响

    Fragment的优势:
    模块化(Modularity):我们不必把所有代码全部写在Activity中,而是把代码写在各自的Fragment中。
    可重用(Reusability):多个Activity可以重用一个Fragment。
    可适配(Adaptability):根据硬件的屏幕尺寸、屏幕方向,能够方便地实现不同的布局,这样用户体验更好。


    fragment生命周期

    Fragment的使用:
    1、静态加载
    定义Fragment的xml布局文件
    自定义Fragment类,继承Fragment类或其子类,同时实现onCreate()方法,在方法中,通过inflater.inflate加载布局文件,接着返回其View
    在需要加载Fragment的Activity对应布局文件中<fragment>的name属性设为全限定类名,即包名.fragment
    最后在Activity调用setContentView()加载布局文件即可
    静态加载一旦添加就不能够在运行时删除

    2、动态加载
    获得FragmentManager对象,通过getSupportFragmentManager()
    获得FragmentTransaction对象,通过fm.beginTransaction()
    调用add()方法或者repalce()方法加载Fragment;
    最后调用commit()方法提交事务

    注意点:
    inflate第三个参数是false,因为在内部实现中要把fragment添加到container中,如果设置为true将会被重复添加

    如果在创建Fragment时要传入参数,必须要通过setArguments(Bundle bundle)方式添加,而不建议通过为Fragment添加带参数的构造函数,因为通过setArguments()方式添加,在由于内存紧张导致Fragment被系统杀掉并恢复(re-instantiate)时能保留这些数据

    可以在Fragment的onAttach()中通过getArguments()获得传进来的参数。如果要获取Activity对象,不建议调用getActivity(),而是在onAttach()中将Context对象强转为Activity对象

    动态加载Fragment中,FragmentTransaction类提供了方法完成增删等操作,完成后调用FragmentTransaction.commit()方法提交修改

    Gson是一个Java库,作用是将Java对象转换成它对应的JSON表示。


    Gson目标

    Gson库的关键类就是Gson,使用起来很简单,直接实例化 new Gson() 即可。它也可以通过GsonBuilder 类来实例化,进行一些初始化设置,初学时无需深入了解。
    Gson实例是无状态的。所以多个JSON序列化和反序列操作完全可以重用一个Gson对象。

    基本序列化方法
    序列化是指将Java对象转换成JSON字符串,使用Gson.toJson(...)方法来进行序列化操作。

    基本反序列化方法
    反序列化是指将JSON字符串传换成Java对象,使用Gson.fromJson(...)方法来进行反序列化操作。反序列化要指定反序列化后的Java对象的类型。

    序列化和反序列化中的注意点
    对象的字段可以并推荐使用private。
    无需使用注解指定哪些字段被包括在序列化和反序列化操作中。当前类,和它所有父类的所有字段都是默认包括的。
    如果字段使用transient修饰,它被默认忽略,不
    包含在序列化和反序列化操作中。
    Gson可以正确处理null值。
    序列化时,值为null的字段会被跳过。
    反序列化时,JSON中缺失的项,其对象对应的字段会被设为null。
    内部类、匿名类等隐含的外部类的字段会被忽略,不包含在序列化和反序列化中。

    修改字段名:
    使用@SerializeName注解自定义字段名;
    使用FieldNamingPolicy来规定基本的命名策略;

    JSP :动态网页开发技术,标签:<% %>
    JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息

    JavaBean:

    JavaBean 与其它 Java 类相比而言独一无二的特征:

    提供一个默认的无参构造函数。
    需要被序列化并且实现了 Serializable 接口。
    可能有一系列可读写属性。
    可能有一系列的 getter 或 setter 方法。
    JavaBean的属性是可以访问、可读写、只读或只写。通过getPropertyName()和setPropertyName()来访问。
    如果JavaBean只读或者只写,则这个属性只提供get或set方法。

    相关文章

      网友评论

          本文标题:Weather_APP项目实践中主要使用的技术

          本文链接:https://www.haomeiwen.com/subject/wqancltx.html