• 9/13-9/18


    一周总结报告

    9/13-9/18这一周主要是学习了Fragment、SQLiteDatabase、MVP模式、参加《Selinux》和《OTA》培训、完成APP以及PDX226项目的自测。

    一、         Fragment

    (一) 概述

    1. 介绍

    使用Fragment可以把屏幕划分成几块,然后进行分组,进行一个模块化管理。Fragment不能够单独使用,需要嵌套在Activity中使用,其生命周期也受到宿主Activity的生命周期的影响。

    Fragment简化了大屏幕UI的设计,它不需要开发者管理组件包含关系的复杂变化,开发者使用Fragment对UI组件进行分组、模块化管理,就可以更方便地在运行过程中动态更新Activity的用户界面。

    1. 特征
    • Fragment总是作为Activity界面的组成部分。Fragment可调用getActivity()方法获取它所在的Activity,Activity可调用FragmentManager的findFragmentById()或findFragmentTag()方法来获取Fragment。
    • 在Activity运行过程中,可调用FragmentManager的add()、remove()、replace()方法动态地添加、删除或替换Fragment。
    • 一个Activity可以同时组合多个Fragment;反过来,一个Fragment也可被多个Activity复用。
    • Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。
    1. 优势

    ²  模块化:我们不必把所有代码全部写在Activity中,而是把代码写在各自的Fragment中。

    ²  可重用:多个Activity可以重用一个Fragment。

    ²  可适配:根据硬件的屏幕尺寸、屏幕方向,能够方便地实现不同的布局,这样用户体验更好。

    1. 核心类

    l  Fragment:Fragment的基类,任何创建的Fragment都需要继承该类。

    l  FragmentManager:管理和维护Fragment。它是抽象类,具体的实现类是FragmentManagerImpl。

    l  FragmentTransaction:对Fragment的添加、删除等操作都需要通过事务方式进行。它是抽象类,具体的实现类是BackStackRecord。

    (二) 创建Fragment需要实现的方法

    u  onCreate():系统创建Fragment对象后回调该方法,在实现代码中只初始化想要在Fragment中保持的必要组件,当Fragment被暂停或者停止后可以恢复。

    u  onCreateView():当Fragment绘制界面组件时会回调该方法。该方法必须返回一个View,该View也就是该Fragment所显示的View。

    u  onPause():当用户离开该Fragment时将会回调该方法。

    (三) Fragment使用

    1. 静态加载

    流程:(1)定义Fragment的xml布局文件

    (2)自定义Fragment类,继承Fragment类或其子类,同时实现onCreate()方法,在方法中,通过inflater.inflate加载布局文件,接着返回其View

    (3)在需要加载Fragment的Activity对应布局文件中<fragment>的name属性设为全限定类名,即包名.fragment

    (4)最后在Activity调用setContentView()加载布局文件即可

    注:静态加载一旦添加就不能在运行时删除。

    1. 动态加载

    (1)       获得FragmentManager对象,通过getSupportFragmentManager()

    (2)       获得FragmentTransaction对象,通过fm.beginTransaction()

    (3)       调用add()方法或者repalce()方法加载Fragment;

    (4)     最后调用commit()方法提交事务

    概念上理解了,还没有实际代码应用,预计在下周APP编写过程中应用。

    二、         SQLiteDatabase

    1、为了实现对数据库版本进行管理, SQLiteOpenHelper 类提供了两个重要的方法 , 分别onCreate(SQLiteDatabasedb) 和 onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion)用于初次使用软件时生成数据库表,后者用于升级软件时更新数据库表结构。

    2、auto_increment是用于主键自动增长的,从1开始增长,当你把第一条记录删除时,再插入第二跳数据时,主键值是2,不是1。

    3、MySQL的中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能。

    4、有些语句比如创建、查询、插入及删除跟MySQL通用。

    三、         Selinux

    安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统,搭建在Linux Security Module(LSM)基础上。

    Selinux模式:Permissve Mode(宽容模式):不会拦截,但是会输出完整的avc日志

                Enfocing mode(强制模式):会拦截,同时也会输出对应的avc日志

                Disabled:关闭 SELinux。

             Selinux理解上有难度,课后作业完成困难。

    四、         OTA

    1. OTA整包跟OTA差分包?

    原生命令:make otapackage:

    (1)整包升级:full_m7_xxx_ota.zip (out/target/product/m7/)

    (2)中间包:target_files-xxx.zip (out/target/product/obj/PACKAGING/target_files_intermediates) ,一般用于制作差分包,进行差分升级。

    2.OTA本地升级验证方式

    (1).User版本升级验证

    由于User版本无法获得root权限,所以采用apk进行升级。将apk安装到手机中,随后将OTA升级包push到 /sdcard/update.zip。点击启动apk,点击升级即可。进recovery选择SD卡升级也可。

    在recovery模式下:adb sideload update.zip

    (2).UserDebug版本升级验证

     UserDebug版本,可以打开root权限。将OTA的升级包放到/system/update_engine/scripts目录下,在该目录下执行python update_device.py --flie xx.zip即可升级。

    (3).User/UserDebug皆可

    对于既没有apk,本地也没有代码这种情况。可以采取在终端下运行adb reboot recovery 进入recovery模式选择从adb升级,随后在终端中执行 adb sideload xx.zip即可。

    OTA培训只是浅显的理解了一些基本概念,勉强完成课后作业。

    五、         MVP模式

    MVP是一个将后台任务和activities/views/fragment分离的方法,让它们独立于绝大多数跟生命周期相关的事件。

    View(UI显示层):是指显示数据并且和用户交互的层。在安卓中,它们可以是一个Activity,一个Fragment,一个android.view.View或者是一个Dialog。

    Model(数据层):是数据源层。比如数据库接口或者远程服务器的api。

    Presenter(逻辑处理层):是从Model中获取数据并提供给View的层,Presenter还负责处理后台任务。

    MVP使用交互流程图示:

     

             学习MVP模式容易,但是应用有些困难,可能需要在多次实践中才能理解透彻。

    六、         去掉导航栏

    去掉顶部导航栏较简单的方法是在onCeate()方法中第一行写下如下代码:

     requestWindowFeature(Window.FEATURE_NO_TITLE);

    但是发现仅仅在onCreate()方法中添加以上代码没有起作用,是因为在android studio中继承Activity的时候一般继承的是AppCompatActivity。这个是为了向下兼容的,这样是去不掉上面的标题栏的,只需要把AppCompatActivity改成Activity就可以去掉标题栏了。

             APP目前进度:实现登陆、注册功能,简单的音乐播放,多语言以及美观的登陆注册页面,剩下功能预计下周完成。

  • 相关阅读:
    1、远程连接工具
    Restful架构API编码规范
    61、springmvc-异步请求-返回DeferredResult
    60、springmvc-异步请求-返回Callable
    59、servlet3.0-异步请求
    58、springmvc-定制与接管SpringMVC
    HTTP层 —— 响应
    HTTP层 —— 请求
    HTTP层 —— 控制器
    HTTP层 —— CSRF保护
  • 原文地址:https://www.cnblogs.com/liujixiang/p/15407711.html
Copyright © 2020-2023  润新知