多线程编程:

  线程的基本用法:

    1.

class  MyThread extends Thread{
@Override
public void run() {
//处理具体逻辑
}
} new MyThread().start();

    2.

class TwoThread implements Runnable {
@Override
public void run() {
//处理具体逻辑
}
} TwoThread twoThread = new TwoThread();
new Thread(twoThread).start();

    3.

new Thread(new Runnable() {
@Override
public void run() {
//处理具体逻辑
}
}).start();

  在子线程中更新UI:

    1.创建Handler,用于接收和处理消息

public static final int UPDATE_TEXT = 1;//标记常量
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case UPDATE_TEXT:
//进行更新UI的操作
tv_main.setText("change text");
break;
default:
break;
}
}
};

    2.在子线程中发送消息

public void onClick(View v) {
switch (v.getId()){
case R.id.bt_main:
new Thread(new Runnable() {
@Override
public void run() {
Message message = new Message();
message.what = UPDATE_TEXT;
handler.sendMessage(message);
}
}).start();
break;
default:
break;
}
}

  解析异步消息处理机制:

    Message:在线程之间传递消息,可以携带少量的信息,用于在不同线程之间交换数据。

    Handler:处理者的意思,主要是用于发送和处理消息的。发送消息一般是使用Handler的sendMessage()方法,而发出的消息经过一系列的处理后,最终会传递到Handler的handleMessage()方法中。

    MessageQueue:消息队列,主要是用于存放所有通过Handler发送的消息。这部分消息会一直存在于消息队列中,等待被处理。每个线程中只会有一个MessageQueue对象。

    Looper:MessageQueue的管家,调用Looper的loop()方法后,就会进入一个无限循环中,每当发现MessageQueue中存在一条消息,就会将它取出,并传递到Handler的handleMessage()方法中。每个线程只会有一个Looper对象。

    

  使用AsyncTask:

    

class DownloadTask extends AsyncTask<Void,Integer,Boolean>{

        @Override
protected void onPreExecute() {
//执行异步任务之前调用
} @Override
protected Boolean doInBackground(Void... params) {
try{
while(true){
//执行耗时操作,不能在这里更新UI
int downloadPercent = 5;//获取需要更新的参数
publishProgress(5);
if(downloadPercent >= 100){
break;
}
}
}catch (Exception e ){
return false;
}
return true;
} @Override
protected void onProgressUpdate(Integer... values) {
//执行publishProgress()后会调用此方法。在这里更新UI
} @Override
protected void onPostExecute(Boolean aBoolean) {
//doInBackground()执行完后会调用此方法。处理返回的结果。
}
} new DownloadTask().execute();

服务的基本用法:

  定义一个服务:

    

了解Service的更多相关文章

  1. 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇

    什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...

  2. Azure Service Fabric 开发环境搭建

    微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...

  3. 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...

  4. C#创建、安装、卸载、调试Windows Service(Windows 服务)的简单教程

    前言:Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这 ...

  5. java中Action层、Service层和Dao层的功能区分

    Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只 ...

  6. org.jboss.deployment.DeploymentException: Trying to install an already registered mbean: jboss.jca:service=LocalTxCM,name=egmasDS

    17:34:37,235 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-0.0.0.0-8080 17:34:37,281 INFO [ ...

  7. Android—Service与Activity的交互

    service-Android的四大组件之一.人称"后台服务"指其本身的运行并不依赖于用户可视的UI界面 实际开发中我们经常需要service和activity之间可以相互传递数据 ...

  8. angularjs 1 开发简单案例(包含common.js,service.js,controller.js,page)

    common.js var app = angular.module('app', ['ngFileUpload']) .factory('SV_Common', function ($http) { ...

  9. IIS启动失败,启动Windows Process Activation Service时,出现错误13:数据无效 ;HTTP 错误 401.2 - Unauthorized 由于身份验证头无效,您无权查看此页

    因为修改过管理员账号的密码后重启服务器导致IIS无法启动,出现已下异常 1.解决:"启动Windows Process Activation Service时,出现错误13:数据无效&quo ...

  10. 如何利用mono把.net windows service程序迁移到linux上

    How to migrate a .NET Windows Service application to Linux using mono? 写在最前:之所以用要把windows程序迁移到Linux上 ...

随机推荐

  1. html5和html的区别是什么(精问)

    html5和html的区别是什么(精问) 一.总结 一句话总结:html5:简洁(文档生命,链接引入) 语义化(语义化标签)  API(canvas,地理位置等)  一些标签(input新类型) 二. ...

  2. html 横线的代码

    第一种: <hr style=" height:2px;border:none;border-top:2px dotted #185598;" />   园点虚线 he ...

  3. Python科学计算(一)

    一.准备教材:<python科学计算> 作者: 张若愚  出版社: 清华大学出版社 出版年: 2012-1 页数: 621 定价: 98.00元 装帧: 平装 ISBN: 97873022 ...

  4. 【BZOJ 1030】[JSOI2007]文本生成器

    [题目链接]:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1030 [题意] [题解] /* 先把AC自动机搞出来; 然后利用AC自动机,把 ...

  5. Android应用《撕开美女衣服》的实现过程及源代码

    现在很多Android市场中都能找到关于美女的应用,比如 撕开美女衣服.吹裙子等. 这些应用的下载量挺大的,作为Android的开发人员或者一名技术人员我们不能只局限在欣赏应用的层面,很多时候需要我们 ...

  6. 十个最有“钱景”的IT技能, 你掌握了哪个?

    IT行业的失业率仍然徘徊在历史低点,其中某些岗位(如网络和安全工程师和软件开发商)的失业率在1%左右. Robert Half Technology最近的一项调查显示,大多数CIO将扩大IT团队或专注 ...

  7. xaml 添加 region

    原文:xaml 添加 region 本文告诉大家如何在 xaml 添加 region 在 VisualStudio 2015 和 VisualStudio 2017 微软支持在 xmal 使用 reg ...

  8. 【a302】&&【9306】贮油点问题

    Time Limit: 1 second Memory Limit: 2 MB 问题描述 一辆重型卡车欲穿过1000公里的沙漠,卡车耗油为1升/公里,卡车总载油能力为500公升.显然卡车装 一次油是过 ...

  9. C#中的并发编程知识

      = 导航   顶部 线程 Task async/await IAsyncResult Parallel 异步的回调   顶部 线程 Task async/await IAsyncResult Pa ...

  10. 为 Mac Finder 增加右键文件打包压缩(免费)

    在 Windows 上用惯了 7-Zip 和 WinRAR,来到 Mac 却突然发现没有类似的工具?Mac 自带的 Zip 工具确实让人吐糟无力,压缩率低就不说了,因为 Mac 上文件名是 Unico ...