Android四大组件之Service(续2)
1.HttpRequest
package com.joyfulmath.android4example.http; import java.io.BufferedReader;
import java.io.InputStreamReader; import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient; import com.joyfulmath.android4example.R; import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView; public class HttpDemoActivity extends Activity implements IResult { protected static final String TAG = "httpdemo.HttpDemoActivity";
public Handler mMainHandler;
public static final String RequestUrl = "http://www.baidu.com";
Button mBtnRequest;
TextView mResponseView;
Button mbtn_json;
/*
* (non-Javadoc)
*
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_httpdemo_main);
mBtnRequest = (Button) this.findViewById(R.id.btn_request);
mResponseView = (TextView) this.findViewById(R.id.httpdemo_text);
mbtn_json = (Button) this.findViewById(R.id.btn_json);
mBtnRequest.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
WorkThread work = new WorkThread(HttpDemoActivity.this,
RequestUrl);
work.start();
}
}); mbtn_json.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) { JSonParser parser = new JSonParser();
parser.parser();
}
}); mMainHandler = new Handler() { /*
* (non-Javadoc)
*
* @see android.os.Handler#handleMessage(android.os.Message)
*/
@Override
public void handleMessage(Message msg) {
String str = (String) msg.obj;
Log.i(TAG, "get " + str);
mResponseView.setText(str);
} };
} /*
* (non-Javadoc)
*
* @see android.app.Activity#onStart()
*/
@Override
protected void onStart() {
super.onStart();
} /*
* (non-Javadoc)
*
* @see android.app.Activity#onStop()
*/
@Override
protected void onStop() {
super.onStop();
} /*
* (non-Javadoc)
*
* @see android.app.Activity#onDestroy()
*/
@Override
protected void onDestroy() {
super.onDestroy();
} private class WorkThread extends Thread { IResult mListener;
String address;
String message = "";
public WorkThread(IResult result, String address) {
mListener = result;
this.address = address;
} /*
* (non-Javadoc)
*
* @see java.lang.Thread#run()
*/
@Override
public void run() {
Log.i(TAG, "WorkThread start");
try {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(address);
HttpResponse response = client.execute(request);
InputStreamReader inreader = new InputStreamReader(response
.getEntity().getContent());
BufferedReader reader = new BufferedReader(inreader);
String str = reader.readLine();
Log.i(TAG, "WorkThread start str:"+str);
while(str!=null)
{
message+= str;
str = reader.readLine();
} if(mListener!=null)
{
mListener.onResult(message);
} } catch (Exception ex) {
Log.i(TAG, "WorkThread ex:"+ex.getMessage());
}
} } @Override
public void onResult(String msg) {
Message message = new Message();
message.what = 1;
message.obj = msg;
mMainHandler.sendMessage(message);
}
}
package com.joyfulmath.android4example.http;
public interface IResult {
void onResult(String msg);
}
json格式解析:
package com.joyfulmath.android4example.http; import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener; import android.util.Log; public class JSonParser {
private static final String JSON =
"{" +
" \"phone\" : [\"12345678\", \"87654321\"]," +
" \"name\" : \"yuanzhifei89\"," +
" \"age\" : 100," +
" \"address\" : { \"country\" : \"china\", \"province\" : \"jiangsu\" }," +
" \"married\" : false" +
"}";
private static final String TAG = "httpdemo.JSonParser"; public void parser()
{
Log.i(TAG, "[parser]");
try{
JSONTokener jsonparser = new JSONTokener(JSON);
JSONObject person = (JSONObject) jsonparser.nextValue();
JSONArray pbones = person.getJSONArray("phone");
Log.i(TAG, "[parser]pbones:"+pbones.getString(0)+" "+pbones.getString(1)); String name = person.getString("name");
Log.i(TAG, "[parser]name:"+name); }catch(Exception ex)
{
Log.i(TAG, "[parser]ex:"+ex.getMessage());
} }
}
xml解析:
三种:DOM,SAX,PULL
android 常用的xmlpullreader:
package com.joyfulmath.android4example.http; import java.io.IOException; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException; import com.joyfulmath.android4example.R; import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.util.Log; public class XmlParser { private static final String TAG = "httpdemo.XmlParser"; // pull
/*xmlpullparser 不关心xml的结构属性,它就是开始,结束,属性,value。
*
* */
public void pullXml(Resources res) {
Log.i(TAG, "[pullXml]");
XmlResourceParser parser = res.getXml(R.layout.layout_httpdemo_main);// xmlpullparser
int eventType;
try {
eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
Log.i(TAG, "[pullXml] START_DOCUMENT");
} else if (eventType == XmlPullParser.START_TAG) {
Log.i(TAG, "[pullXml] START_TAG:" + parser.getName());
int count = parser.getAttributeCount();
Log.i(TAG, "[pullXml] \t count" + count );
for (int i = 0; i < count; i++) {
String noteName = parser.getAttributeName(i);
Log.i(TAG, "[pullXml] \t noteName:" + noteName + " at " + i);
if(noteName.equals("id")||noteName.equals("text"))
{
String value = parser.getAttributeValue(i);
Log.i(TAG, "[pullXml]\t noteValue:" + value + " at " + i);
}
}
} else if (eventType == XmlPullParser.END_TAG) {
Log.i(TAG, "[pullXml] END_TAG:" + parser.getName());
} else if (eventType == XmlPullParser.TEXT) {
Log.i(TAG, "[pullXml] TEXT:" + parser.getText());
} eventType = parser.next();
} Log.i(TAG, "[pullXml] END_DOCUMENT");
} catch (XmlPullParserException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
Android四大组件之Service(续2)的更多相关文章
- Android四大组件之Service(续)
本地服务启动和通过广播的方式回调是非常简单的. 下面介绍远程服务和通过远程回调的方式通知activity的方式. 1.service定义: package com.joyfulmath.globals ...
- Android四大组件之Service
Android四大组件之Service Android支持服务的概念,服务是在后台运行的组件,没有用户界面,Android服务可用有与活动独立的生命周期.Android支持两种类型的服务: 本地服务: ...
- 【Android开发日记】之入门篇(五)——Android四大组件之Service
这几天忙着驾校考试,连电脑都碰不到了,今天总算告一段落了~~Service作为Android的服务组件,默默地在后台为整个程序服务,辅助应用与系统中的其他组件或系统服务进行沟通.它跟Activity的 ...
- Android成长日记-Android四大组件之Service组件的学习
1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...
- Android 四大组件之service与Broadcast
Android 四大组件之一:service: Service有五个生命周期:onCreat,onStartCommand, onBind,onUnbind, onDestroy 主要有绑定和非绑定两 ...
- Android四大组件之一Service介绍-android学习之旅(十二)
基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService ...
- Android四大组件之一 -- Service详解
相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序 ...
- Android四大组件:Service
前言 Service作为Android四大组件之一,应用非常广泛 本文将介绍对Service进行全面介绍(基础认识.生命周期.使用和应用场景) 目录 目录 1. 基础知识 定义:服务,属于Androi ...
- Android四大组件之Service浅见
Service 是Android四大组件之一,可以在不显示界面的情况下在后台运行.还有一个作用是通过AIDL来实现进程间通信. Service的启动方式 Service的启动方式有两种,startSe ...
随机推荐
- 20155339 2016-2017 2 《Java程序设计》第2周学习总结
20155339 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 这周学习了课本的第三章,主要内容是JAVA的基础语法,在这章的学习过程中我发现大部分与c语言 ...
- 前后端分离之JWT用户认证zf
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...
- 1245 最小的N个和
1245 最小的N个和 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有两个长度为 N 的序列 A 和 B, ...
- 搜索引擎ElasticSearch系列(四): ElasticSearch2.4.4 sql插件安装
一:ElasticSearch sql插件简介 With this plugin you can query elasticsearch using familiar SQL syntax. You ...
- No module named MYSQLdb 报错
问题描述: 报错:ImportError: No module named MySQLdb 对于不同的系统和程序有如下的解决方法: easy_install mysql-python (mix os) ...
- hdu - 6281,2018CCPC湖南全国邀请赛F题,快排
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6281 题意: 根据已给出的式子,进行排序,然后输出排完序后原先的下表. 题解:用结构体保存,在用结构体 ...
- 基于腾讯云CLB实现K8S v1.10.1集群高可用+负载均衡
概述: 最近对K8S非常感兴趣,同时对容器的管理等方面非常出色,是一款非常开源,强大的容器管理方案,最后经过1个月的本地实验,最终决定在腾讯云平台搭建属于我们的K8S集群管理平台~ 采购之后已经在本地 ...
- Paper Reading - Attention Is All You Need ( NIPS 2017 ) ★
Link of the Paper: https://arxiv.org/abs/1706.03762 Motivation: The inherently sequential nature of ...
- #Ubuntu 18.04 安装tensorflow-gpu 1.9
参考 https://tensorflow.google.cn/install/install_linux http://nvidia.com/cuda http://developer.nvidia ...
- php异步学习(1)
1.为啥PHP需要异步操作? 一般来说PHP适用的场合是web页面展示等耗时比较短的任务,如果对于比较花时间的操作如resize图片.大数据导入.批量发送EDM.SMS等,就很容易出现操作超时情况.你 ...