1. Android异步任务处理

  在程序开启后,就会有一个主线程,负责与用户交互。如果在主线程中执行了耗时操作,那么界面就会停止响应,所以要将耗时操作转移到别的线程中。

  AsyncTask的用法,包括传入参数、设定后台任务、过程信息的处理等。

  下面代码的作用是:点击Button后,创建线程每隔3秒通过System.out.println()打印一段语句。

 1 package com.example.testthread;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.View;
6
7 public class MainActivity extends Activity {
8
9 @Override
10 protected void onCreate(Bundle savedInstanceState) {
11 super.onCreate(savedInstanceState);
12 setContentView(R.layout.activity_main);
13
14 findViewById(R.id.button1).setOnClickListener(
15 new View.OnClickListener() {
16
17 @Override
18 public void onClick(View v) {
19
20 // 创建新线程,不会影响主线程。并发执行
21 new Thread() {
22 public void run() {
23 try {
24
25 while (true) {
26 sleep(3000);
27 System.out
28 .println(">>>>>>>>>>>>>>>>>Tick!");
29 }
30 } catch (InterruptedException e) {
31 // TODO Auto-generated catch block
32 e.printStackTrace();
33 }
34 }
35 }.start();
36
37 // try {
38 // Thread.sleep(3000);
39 // System.out.println(">>>>>>>>>>>>>>>>>Tick!");
40 // } catch (InterruptedException e) {
41 // // TODO Auto-generated catch block
42 // e.printStackTrace();
43 // }
44 }
45 });
46 }
47 }

MainActivity

2. Android中基于HTTP的通信技术

  参考文章:浅谈HTTP中Get与Post的区别 http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

2.1 使用Http的Get方式读取网络数据

  这里使用了有道翻译API,execute("http://fanyi.youdao.com/openapi.do?keyfrom=testwangluo&key=936705455&type=data&doctype=json&version=1.1&q=china")表示查询词为china,json数据格式,会传回一定的信息。官网上的说明如下:

  本例程通过单击Button,向系统输出"china"单词的查询结果。需要互联网权限。

 1 package com.example.httpget;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.net.MalformedURLException;
8 import java.net.URL;
9 import java.net.URLConnection;
10
11 import android.app.Activity;
12 import android.os.AsyncTask;
13 import android.os.Bundle;
14 import android.view.View;
15 import android.widget.TextView;
16
17
18 public class MainActivity extends Activity {
19
20 private TextView textView;
21
22 @Override
23 protected void onCreate(Bundle savedInstanceState) {
24 super.onCreate(savedInstanceState);
25 setContentView(R.layout.activity_main);
26
27 textView = (TextView) findViewById(R.id.textView1);
28
29 findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
30
31 @Override
32 public void onClick(View v) {
33 //由于读取互联网数据是比较耗时的,因此使用异步操作
34 new AsyncTask<String, Void, Void>(){
35
36 @Override
37 protected Void doInBackground(String... params) {
38 URL url;
39 try {
40 url = new URL(params[0]);
41 URLConnection connection = url.openConnection();
42 InputStream is = connection.getInputStream();
43 InputStreamReader isr = new InputStreamReader(is, "UTF-8");
44 BufferedReader br = new BufferedReader(isr);
45 String line;
46 while ((line = br.readLine()) != null) {
47 System.out.println(line);
48 //textView.setText(line);
49 }
50 br.close();
51 isr.close();
52 is.close();
53 } catch (MalformedURLException e) {
54 // TODO Auto-generated catch block
55 e.printStackTrace();
56 } catch (IOException e) {
57 // TODO Auto-generated catch block
58 e.printStackTrace();
59 }
60 return null;
61 }
62
63 }.execute("http://fanyi.youdao.com/openapi.do?keyfrom=testwangluo&key=936705455&type=data&doctype=json&version=1.1&q=china");
64 }
65 });
66 }
67
68 }

MainActivity

2.2 使用Http的Post方式与网络交互通信

  功能与Get方式一样,代码如下:

 1 package com.example.httppost;
2
3 import java.io.BufferedReader;
4 import java.io.BufferedWriter;
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.io.InputStreamReader;
8 import java.io.OutputStreamWriter;
9 import java.net.HttpURLConnection;
10 import java.net.MalformedURLException;
11 import java.net.URL;
12 import com.example.httpget.R;
13
14 import android.app.Activity;
15 import android.os.AsyncTask;
16 import android.os.Bundle;
17 import android.view.View;
18
19
20 public class MainActivity extends Activity {
21
22 //private TextView textView;
23
24 @Override
25 protected void onCreate(Bundle savedInstanceState) {
26 super.onCreate(savedInstanceState);
27 setContentView(R.layout.activity_main);
28
29 //textView = (TextView) findViewById(R.id.textView1);
30
31 //http://fanyi.youdao.com/openapi.do?keyfrom=testHTTP12&key=1382355899&type=data&doctype=json&version=1.1&q=bad
32 //问号后面,都是向服务器传递的数据
33 //get方法是将需要传递给服务器的数据,放在URL内部
34 //真实的URL是http://fanyi.youdao.com/openapi.do
35 //post方式
36
37 findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
38
39 @Override
40 public void onClick(View v) {
41 //由于读取互联网数据是比较耗时的,因此使用异步操作
42 new AsyncTask<String, Void, Void>(){
43
44 @Override
45 protected Void doInBackground(String... params) {
46 URL url;
47 try {
48 url = new URL(params[0]);
49 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
50
51 //设置connection向服务器传输数据
52 connection.setDoOutput(true);
53 connection.setRequestMethod("POST");
54
55 OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
56 BufferedWriter bw = new BufferedWriter(osw);
57 //不用带问号
58 bw.write("keyfrom=testHTTP12&key=1382355899&type=data&doctype=json&version=1.1&q=china");
59 //强制输出
60 bw.flush();
61
62
63
64 InputStream is = connection.getInputStream();
65 InputStreamReader isr = new InputStreamReader(is, "UTF-8");
66 BufferedReader br = new BufferedReader(isr);
67 String line;
68 while ((line = br.readLine()) != null) {
69 System.out.println(line);
70 //textView.setText(line);
71 }
72 br.close();
73 isr.close();
74 is.close();
75 } catch (MalformedURLException e) {
76 // TODO Auto-generated catch block
77 e.printStackTrace();
78 } catch (IOException e) {
79 // TODO Auto-generated catch block
80 e.printStackTrace();
81 }
82 return null;
83 }
84
85 }.execute("http://fanyi.youdao.com/openapi.do");
86 }
87 });
88 }
89
90 }

MainActivity

3. Android中基于Socket的网络通信

  Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。ServerSocket 用于服务器端,Socket 是建立网络连接时使用的。

  参考文章:揭开Socket编程的面纱 http://goodcandle.cnblogs.com/archive/2005/12/10/294652.aspx

17_Android网络通信的更多相关文章

  1. ZeroMQ实例-使用ZMQ(ZeroMQ)进行局域网内网络通信

    本文内容摘要:1)安装zeromq.2)实例说明使用zmq进行网络间的消息发送和接收 首先在机器中安装zmq库 步骤如下: 1)下载zeromq的源代码,ZeroMQ的官方网址:http://zero ...

  2. 基础笔记12(socket,url网络通信)

    进一步深入socket 1.网络通信条件: .IP地址,可用主机名. .传输数据时将不用的应用程序通过数字标识区分开来,这种标识称为逻辑端口,也称端口.(0-65535端口,一般系统预留0-1024) ...

  3. Windows Store App 网络通信 HttpWebRequest

    如果希望更好地控制HTTP请求,可以使用System.Net类库中的HttpWebRequest类,该类对HTTP协议进行了完整的封装,并且提供了很多对HTTP协议中的 Header.Content和 ...

  4. socket网络通信

    1.socket通常也称作"套接字",用于描述IP地址和端口.在internet上的主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个socket,并绑定到一个端口上 ...

  5. 20145316&20145229实验五:网络通信

    20145316&20145229实验五:网络通信 结对伙伴:20145316 博客链接:http://www.cnblogs.com/xxy745214935/p/6130897.html

  6. 网络通信之Socket与LocalSocket的比较

    Socket与LocalSocket都可以实现网络通信,两个有什么区别呢? LocalSocket其通信方式与Socket差不多,只是LocalSocket没有跨越网络边界. 于是,思考到一个问题:a ...

  7. Android 网络通信API的选择和实现实例

    Android开发网络通信一开始的时候使用的是AsyncTask封装HttpClient,没有使用原生的HttpURLConnection就跳到了Volley,随着OkHttp的流行又开始迁移到OkH ...

  8. java 25 - 2 网络编程之 网络通信三要素

    网络通信三要素 IP地址: InetAddress 网络中设备的标识,不易记忆,可用主机名(计算机的标识号) 端口号: 用于标识进程的逻辑地址,不同进程的标识(正在运行的软件的标识号) 传输协议: 通 ...

  9. TCP/UDP,SOCKET网络通信,C++/Java实现

    趁这两天没事干,就把网络通信这一块搞一搞,C/S方面的了解一下,很重要! TCP Server/Client

随机推荐

  1. 833. Find And Replace in String —— weekly contest 84

    Find And Replace in String To some string S, we will perform some replacement operations that replac ...

  2. 一篇搞懂Java的基本数据类型

    byte 基本类型:byte 包装类:java.lang.Byte 大小:8bit 默认值:0 取值范围:-128~127 Byte.MIN_VALUE Byte.MAX_VALUE 二进制补码表示 ...

  3. 教你如何 分析 Android ANR 问题

    ANR介绍 ANR 的全称是 Application No Responding,即应用程序无响应,具体是一些特定的 Message (Key Dispatch.Broadcast.Service) ...

  4. 制作安装Linux操作系统的启动U盘方法其实就这么简单

    安装系统前,我们需要制作系统安装启动U盘(或者DVD,但已经很少使用DVD,所以不再介绍),通过启动U盘来帮助我们安装下载好的Linux系统. 接下来我们来介绍在Windows.Linux和MacOS ...

  5. SpringBoot第五集:整合Druid和MyBatis(2020最新最易懂)

    SpringBoot第五集:整合Druid和MyBatis(2020最新最易懂) 1.SpringBoot整合Druid Druid是阿里巴巴的一个开源项目,是一个数据库连接池的实现,结合了C3P0. ...

  6. Numpy_02

    # 十,使用数组进行文件输入和输出 # Numpy 可以将数据以[文本]或[二进制]的形式存入硬盘,或从硬盘载入. # 由于大部分用户更倾向于使用pandas等其他工具来载入文本或表格型数据,因此,这 ...

  7. 变强——GitHub 热点速览 Vol.46

    作者:HelloGitHub-小鱼干 网络不通怎么办?Ping 就是你的调试大招,而 gping 则是 Ping 的内功,终端可视化显示 Ping 结果,一眼看明数据接收情况.前端调试大招又是什么呢? ...

  8. Socket accept 简要分析

    accept 用于从指定套接字的连接队列中取出第一个连接,并返回一个新的套接字用于与客户端进行通信,示例代码如下 #include <sys/types.h> /* See NOTES * ...

  9. linux下制作软件包安装服务器

    linux下的软件包在有网络的情况下比较好安装,在ubuntu下,更新sourcelist,然后使用apt-get就可以很方便的安装包,在centos下面,更新yum列表,然后使用yum也可以进行方便 ...

  10. ubuntu配置简单的DNS服务器

    之所以说是简单的服务器,实现的功能很简单,通过这个dns server 查询制定域名的时候,能够根据设置的值来返回IP,当前的需求是需要轮询的返回IP DNS 轮询机制会受到多方面的影响,如:A记录的 ...