教育管理系统——android家长客户端

  最近做了一个android的小项目,服务器端已经搭建好了,使用了spring MVC作为后端技术,发布了一系列web接口来接受客户端提交的数据和返回客户端请求的数据,web端使用了ext js来作为前端技术。同时还需要一个android客户端和ios客户端,临时先开发了一个android客户端,因为服务器端接口已经写好了,安卓端这边只需要访问这些接口就可以获取需要展示的数据和提交数据即可,开发难度不大。因为时间比较紧迫,所以没有做详细的设计,导致后来有很多其实比较冗余的代码,其实可以通过良好的设计来减少代码量,做好继承就可以了,这一点是一个教训,以后在进行面向对象的开发时需要注意。另外也没有做缓存机制的设计,也就是说应用所需的所有数据都是在用户请求时去服务器端获取的,本地不会保存数据,这样做减少了逻辑的复杂度,有利于开发速度。但是以后需要缓冲机制的话改动可能比较大。

  下面简单描述一下这个应用的逻辑流程,首先用户必须要进行登录验证才可以进入应用,这样做的目的是减少业务逻辑的复杂性。当用户验证成功进入应用后,会展现给用户三个tab,分别是新闻通知tab,mytab,message tab,其中新闻通知是用来展示学校发布的各种新闻和通知,my tab是用来提供用户查询各种信息的地方,message是用来查看和发送站内信给老师的地方。下面对这里面用到的各个组件或者机制进行一下描述。

  Thread与Handler:当用户进行登录验证或者其它需要连接网络的操作时,都需要使用thread,在thread中使用httpclient来进行网络连接,当获取到服务器传输来的数据并进行处理后,网络线程通过handler机制来与开启网络线程的线程进行数据同步的工作,handler一般是作为主线程中的对象传递给thread的,因此在handler中可以对主线程中的ui进行处理等工作。在java中,一切都是对象,thread也是,thread中有一个run函数是线程开始后所执行的函数,当在主线程中new出一个thread后,需要调用start这个函数后线程才会执行。

  fragment:现在的应用,ui越来越复杂,原来单纯的在activity中构建ui变得不太灵活,现在安卓中引入了fragment机制,一个activity中可以使用多个fragment来构建ui界面,这样在一个activity的生命周期中就可以方便的构建复杂的ui界面而不需要切换activity。类似于activity中的oncreate方法,fragment中的oncreateview负责fragment初始化时的主要工作,此方法返回一个此fragment的view给activity,fragment也使用布局文件来初始化界面,使用inflater的inflate方法来初始化界面。

  listview:本应用中主要使用listview控件来展示数据信息,多个listitem来构造一个listview,listitem界面可以使用布局文件来定义,同时listview有一个addheader方法,可以在listview头部添加一个view来显示在listview的头部。同时,listview可以实现onscrolllistener接口,来实现listview拖动的效果。

  adapter:适配器,类似于listview这样的控件,需要适配器来填充数据,适配器一般会和一个list数据结构绑定,安卓系统会根据list的大小来构建listitem的数目和内容。

  这里描述的四个控件都是安卓应用中比较重要的四个控件,这里只是简单描述,具体的内容比这里描述的更复杂,有时间的话再仔细描述一下这四个控件的具体用法。

 

转载于:https://www.cnblogs.com/libs5510/p/4559238.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JoySSL付费版证书的优势

JoySSL付费版证书相比免费版有很多优势。首先,付费版证书通常由权威的CA(证书颁发机构)签发,在浏览器和操作系统中具有99.99%的兼容性,被主流浏览器如Chrome、Firefox、Safari和Edge等广泛支持和认可。这确保了无论用户…

Git命令集十三——快照操作

2019独角兽企业重金招聘Python工程师标准>>> Git命令集十三——快照操作 Git工具中提供了一个stash命令,这个命令的作用是创建快照。快照主要的用途是将当前未更新到缓存区的修改进行入栈保存,创建快照后,Git的状态会变回上一次提…

Asp.net core IdentityServer4与传统基于角色的权限系统的集成

img写在前面因为最近在忙别的,好久没水文了 今天来水一篇;在学习或者做权限系统技术选型的过程中,经常有朋友有这样的疑问 :“IdentityServer4的能不能做到与传统基于角色的权限系统集成呢?”“我的公司有几百个接口&a…

oracle 快捷 企业,Oracle自治数据库提供APEX 20.1,助企业快速构建应用

Oracle自治数据库(Oracle Autonomous Database)现已提供Oracle APEX 20.1,Oracle Application Express(APEX)是一个低代码应用开发平台,随附在所有Oracle数据库当中,企业也可以通过所有Oracle数据库云服务来使用,包括Oracle自治数…

【转】CSS样式覆盖规则

大家都知道CSS的全称叫做“层叠样式表”,但估计很多人都不知道“层叠”二字的含义。其实,“层叠”指的就是样式的覆盖,当一个元素被运用上多种样式,并且出现重名的样式属性时,浏览器必须从中选择一个属性值&#xff0c…

C之memset、memcpy、strcpy、strncpy区别

1 memset memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’, memset可以方便的清空一个结构类型的变量或数组。 char a[100]; memset(a, \0, sizeof(a)); struct student {char name[16];int age; }; struct student s…

Cachefiled

NFS不同共享客户端间的数据不同步 问题现象 当您用台ECS挂载同一个NFS文件系统,在ECS-A上append写文件,在ECS-B用tail -f观察文件内容的变化。在ECS-A写完之后,在ECS-B看到文件内容变化会有10-30秒的延时。然而相同的场景下,如果直…

算法小白——基本排序算法入门

计算的 时间复杂度(最差、平均、和最好性能),依据列表(list)的大小(n)。一般而言,好的性能是O(n log n),且坏的性能是O(n^2)。对于一个排序理想的性能是O(n)。仅使用一个抽象关键比较运算的排序…

使用Dynamic LINQ创建高级查询服务

前言在以前的文章中,我们介绍了使用AutoFilterer.Generators创建高级查询服务。但是,AutoFilterer.Generators只能提供简单的范围筛选:今天,我们介绍如何使用Dynamic LINQ轻松实现更强大的高级查询服务。Demo创建ASP.NET Core Web…

php框架中uri路由机制,URI 路由 — CodeIgniter 3.1.5 中文手册|用户手册|用户指南|中文文档...

URI 路由一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系。URL 中的每一段通常遵循下面的规则:example.com/class/function/id/但是有时候,你可能想改变这种映射关系,调用一个不同的类和方法,而不是URL 中…

线程池的开源实现(mariadb和percona版本)

2019独角兽企业重金招聘Python工程师标准>>> 一、"Thread pool in MariaDB 5.5" 线程池解决的问题: 传统mysql使用一个线程处理一个客户端连接,如果许多的并发用户,将使性能下降。因为大量的线程将引起上下文交换&#…

C++之goto

1 goto code: result:

表单-登陆框

一、实现登陆框 1、用到【form】【caption】【table】【method】 2、用户名 <input type"text" name"uername"> 3、密码 <input type"password" name"mima"> 4、注册 <td aling"center" colspan"1"…

[译]9条关于高性能ElasticSearch的配置建议

原文链接:https://www.loggly.com/blog/nine-tips-configuring-elasticsearch-for-high-performance/Loggy使用ES作为其很多核心功能的搜索引擎. 如Jon Gifford在最近的文章ElasticSearch vs Solr中所述, 日志管理系统对搜索引擎有特别需求, 具体如下: 对于大规模的数据索引具有…

ABP vNext微服务架构详细教程——结束语

ABP vNext微服务架构详细教程——简介ABP vNext微服务架构详细教程——架构介绍ABP vNext微服务架构详细教程——身份管理服务ABP vNext微服务架构详细教程——基础服务层ABP vNext微服务架构详细教程——聚合服务ABP vNext微服务架构详细教程——身份认证服务ABP vNext微服务架…

创建 linux分区命令,Linux中创建分区

在很多情况下我们可能需要在使用Linux的时候创建新的分区来帮助我们更好的学习和工作&#xff0c;接下来我就详细的介绍一下如何利用fdisk这条命令进行硬盘分区。Linux磁盘分区和windows存在区别&#xff0c;Linux分区分为三类 主分区 扩展分区 和逻辑分区。然而它们三个关系有…

Android studio之Error:(23, 17) Failed to resolve: junit:junit:4.12

1 probleam 2 resolve method // testCompile junit:junit:4.12

第27周六

今天去办理了公交卡转移保证金业务&#xff0c;又去送修了4s和n5两个手机&#xff0c;最后又陪她重新办了个移动卡&#xff0c;没有花10元去买什么卡槽&#xff0c;到中移动办业务那里自动给了卡槽试试没问题&#xff0c;后来又直接给补办了一张新卡&#xff0c;全新的设计能兼…

20杨氏矩阵查找

问题描述&#xff1a;在一个m行n列二维数组中&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。 例如下面的二维数组就…

玩一玩微信公众号开发(一) 接入系统

一开始我准备学一学微信开发。后来看了一下文档&#xff0c;需要自己搭服务器进行接口对调。有点麻烦所以就没继续学下去。现在学习过了Kotlin、Spring Boot很多东西&#xff0c;感觉可以比较方便的进行开发了。今天就来回过头学习一下。 准备工作 申请公众号 首先说明一下&…