Android 非同步任務 - AsyncTask

Android 非同步任務 - AsyncTask

Android为什么要使用多线程

  • 提高用户体验或者避免ANR(如果在主线程(UI线程)操作一些耗时的操作容易造成卡顿
    android 规定主线程中不可以做http 连接操作。)
  • 异步
  • 多任务

当主线程(UI线程)操作到一些复杂的IO操作(文件操作,网络操作,数据库操作),复杂运算等耗时操作,容易造成卡顿。

应用程序弹出“无响应”的对话框(ANR),那是因为在Android主线程中进行了超时的操作,过多的阻塞了主线程就会导致应用出现ANR的Waring。(android 规定主线程中不可以做http 连接操作)

AsyncTask是什么

AsyncTask,是android提供的輕量級的非同步類,可以直接繼承AsyncTask,在類中實現非同步操作,並提供介面反饋當前非同步執行的程度(可以通過介面實現UI進度更新),最後反饋執行的結果給UI主線程.

为什么使用AsyncTask

  • AsyncTask能实现多线程,避免ANR
  • 简单快捷易操作
  • 过程可控

AsyncTask怎么使用

AsyncTask定义了三种泛型类型 Params,Progress和Result。
Params 启动任务执行的输入参数,比如HTTP请求的URL。
Progress 后台任务执行的百分比。
Result 后台执行任务最终返回的结果,比如String。

`private class TestAsyncTask extends AsyncTask<String, Void, Boolean> 

{

 @Override
  protected void onPreExecute() 
  {
    //最先执行的就是这个。一遍添加进度条
 }

  @Override
  protected Boolean doInBackground(String... params)
  {
    //这个是在后台执行的东西,就是说,它自动另外开了个线程运行,不影响你现在做的东西。
    //复杂的IO操作(文件操作,网络操作,数据库操作),复杂运算等耗时操作
 }


@Override
  protected void onPostExecute(Boolean result)
  {
    if (result)
    {
      //后台执行的完毕后,它会用Result通知这里,就是执行这里了。
  }
    else
    {
      //所以最好判断一下result,写个else,判断后台执行的东西是不是出问题了。
  }
  }
}`

http://yuchen.blog.51cto.com/2739238/593019

Dao模式

DAO模式

信息系统的架构分为:

客户层———-显示层———-业务层————-数据层————-数据库

  • 1.客户层:客户层就是客户端,简单的来说就是浏览器。
  • 2.显示层:JSP/Servlet,用于给浏览器显示。
  • 3.业务层:对于数据层的原子操作进行整合。(Dao)
  • 4.数据层:对于数据库进行的原子操作,增加、删除等;(DaoImpl)

说直白点就是定义了一个接口(Dao),让(DaoImpl)去实现这个接口。

Dao层包含的类

DAO层一般有接口和该接口的实现类!

  • 接口用于规范实现类!
  • 实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时 直接调用公共类DAO类!

为什么使用Dao

Dao是接口,他的优势就是接口的优势。

接口作为系统与外界交互的窗口,接口体现是一种规范。

对于接口的实现者而言,接口规定了实现者必须向外提供哪些服务(以方法的形式来提供);

对于接口调用者而言,接口规定了调用者可以调用哪些服务,以及如何调用这些服务(就是如何来调用方法的)。

当一个程序中使用接口时,接口是多个模块之间的耦合标准;

当多个应用程序之间使用时,接口时多个程序之间的通信标准。

从某种程度来说,接口类型整个系统中的“总纲”,它制定了系统之间各个模块应该遵循的标准,因此一个系统中的接口不应该经常改变。一旦接口改变,对整个系统
甚至其他系统的影响将是辐射式的,导致系统中大部分类需要重写。

jsp两种设计模型

jsp两种设计模型

  • jsp+javaBean
  • jsp+javaBean+Servlet

其实还有第三种,纯粹用jsp来编写。由jsp来处理业务逻辑,显示页面,控制流程。由于这种代码繁琐,可重复性差、不易于维护所以很快被市场抛弃了

jsp+javaBean

页面显示和业务逻辑处理分开,JSP实现页面显示,JavaBean对象用来保存数据和实现商业逻辑

工作原理是:当浏览器发出请求时,jsp接受请求并访问javabean。若需要访问数据库后台服务器,则通过javaBean连接数据库或后台服务器,执行相应的处理。javaBean将处理的结果数据交给jsp。jsp提取结果并重新组织后,动态生成HRML页面,返回给浏览器。用户从浏览器显示的页面中得到交互的结果

jsp+javaBean+Servlet

把流程控制代码和部分的逻辑处理代码提取到servlet中去。

mvc架构:model层 +view层 controller层

  • model:实现业务逻辑,包括了web应用程序功能的核心,负责存储与
    应用程序相关的数据
  • view:用于用户的页面显示,他可以访问model层数据,但不能更改这些数据
  • Controller:主要负责model和view的控制关系,负责处理http的请求等

并不是说mvc架构就更好。
根据实际来选择:

  • 当事务逻辑比较负责、分支较多或需要涉及很多JavaBean组件时,由于JSP和JavaBean+Servlet模型比JSP和JavaBean模型有更清晰的页面表现、更明确的开发模块的划分,所以使用JSP和JavaBean+Servlet模型比较适合
  • 对于简单的交互处理,利用JSP和JavaBean模型,JSP主要是使用HTML工具开发,然后再插入少量的Java代码就可以实现动态交互。在这种情况下,使用JSP和JavaBean模型更加方便快捷

jsp九大内置对象

jsp九大内置对象

  • out 输出对象
  • request 请求对象
  • reponse 响应对象
  • session 会话层对象
  • application 应用层对象
  • config 配置对象
  • page 页面对象
  • pageContext 页面上下文对象
  • Exception 异常对象

为什么要有内置对象

因为这九大对象在jsp中使用太平繁,为了简化操作就事先内置在jsp中。程序员们就可以不用每次都去实例化操作。

(程序编写的绝大部分原因都是为了提高效率)

out (page)

out最常用的对象之一,向客户端输出各种数据对象。

request (request)

request 是客户端向服务器发出的请求。
封装了来自客户端的各种浏览信息

通过getParameter、getParameterNames和getParameterValues方法来获取请求对象中所包含的参数的值。

也可以设置其属性值,setAttribute与getAttribute方法这两个方法先设置后取得。所以他们一般都是同时出现

request的作用域只有在请求时,当请求结束时,得到响应后就销毁

response (page)

response代表对客户端的响应。但一般比较少用,使用out直接输出

封装了服务器的各种响应信息

session(session)

session是保存了会话信息,也就是说他可以在同一用户之前共享数据

session代表服务器与客户端所建立的会话。
一个完整的会话是:从客户端连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。

根据这个特性,session可以实现在线购物,密码安全等保存客户端状态信息操作

application(application)

表示了上下文信息,他可以在不同的用户信息共享信息

application负责提供应用程序在服务器中运行时的一些全局信息。根据这个特性,他能实现浏览计数器

config(page)

封装了应用程序的配置信息

page(page)

指向了jsp当前程序本身

pageContext(page)

提供了对jsp所有对象的访问

Exception(page)

封装了程序执行中的异常或错误信息

括号中的为作用域
剩下的以后用到的时候再谈。

web工作原理

Web的工作原理

行业发展趋势:

先有客户端迁移到移动端

再由移动端迁移到浏览器

随着云计算的迅速发展,网络速度的不断加快,浏览器的不断强大。云计算的普及已经越来越深入人心。这将会带来更大的发展空间,人们在网页上实现更多的操作。这也意味着未来十年内将迎来网页端的再一次高潮。

我们这一代是最差的一代,似乎所有挣钱的行业都被抢占完了。
但我们这一代也是最幸运的一代,我们已经明确的知道了解网页端的开发能给我们带来的就业前景。

这时候、我们必须赶在这一波潮流之前学好web开发

这里粗略的讲解一下

web:分成server端(服务器)和client(客户端)他们要通过浏览器进行传输数据,浏览器必须要支持http协议。

web的工作原理:

  • 1.建立连接

  • 2.client通过浏览器向server端发送request

  • 3.server再response返回给client

  • 4.关闭连接

server是怎么处理client发送上来的请求的呢

  • server创建一个servlet的实例(调用init());
  • client的请求到达server;
  • server将请求发送给servlet;
  • servlet生成对应请求的相应;
  • server激活Servlet的service()方法,传递请求和响应对象作为参数;

server是如何创建servlet的呢?

通过jsp页面,也就是包含静态的html代码和动态的java程序以及其他脚本写在一起的页面,最终通过servlet容器编译成完servlet类(java类)。

现在我们一般使用Tomcat作为servlet的容器。在我们执行jsp后进行第一次执行时。tomcat就先将jsp转化为了servlet

重复一边jsp和servlet和tomcat
jsp:是一个带有java程序的html
servlet:是一个jsp执行后的java类
tomcat:是执行这个编译的容器

其中的具体实现以后慢慢分享

First Blog

这是我的新博客

为什么要创建博客

  • 对学习进行归纳总结
  • 纵观全局,对所学的知识扩散
  • 写博客的资源都源于网络,是我加以整理归纳得来。经过多方比对,一番思考,能加深我对问题的理解
  • 分享,收获最大的是自己

    怎么写好博客

  • 学习实践中遇到的问题,记录下来。

  • 抽取时间,系统研究他的原理
  • 不盲从,不瞎编
  • 自己真正理解了再写博客

人和人的差距源至业余时间。