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();
        }

    }
}
时间: 2024-10-28 15:55:47

Android四大组件之Service(续2)的相关文章

Android 四大组件之Service详解

                   Android四大组件之Service详解    来这实习已经10多天了,今天整理整理学习时的Android笔记.正所谓好记性不如烂笔头,今天来说说service组件. service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的. Service是在一段不定的时间运行在后台,不和用户交互应用组件.每个

【Android的从零单排开发日记】之入门篇(五)——Android四大组件之Service

这几天忙着驾校考试,连电脑都碰不到了,今天总算告一段落了~~Service作为Android的服务组件,默默地在后台为整个程序服务,辅助应用与系统中的其他组件或系统服务进行沟通.它跟Activity的级别差不多,但不能自己运行只能后台运行.service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等, 总之服务总是藏在后台的. ps:Service运行在主线程中的,所

Android 四大组件之Service(上)

1.Service简介 Service是Android四大组件中最与Activity相似的组件,他们都代表可执行的程序.Service一直运行于后台,不会与用户交互,可用来处理一些耗时的任务(比如:后台播放音乐,I/O操作等).它的创建.配置与Activity基本相似,下面将详细介绍Android Service的开发. 2.创建.配置Service 2.1 定义一个继承Service类的子类 2.2 在AndroidManifest.xml中配置该Service 需要注意的是 Service和

Android 四大组件之service与Broadcast

Android 四大组件之一:service: Service有五个生命周期:onCreat,onStartCommand, onBind,onUnbind, onDestroy 主要有绑定和非绑定两种方式 首相在Activity中设置四个Button,用于测试绑定和非绑定两种方式,按下Button播放音乐,停止音乐,非绑定用StopService停止,绑定方式用Bind Service启动,解绑用unbindService停止. 非绑定:Intent intent=new Intent(Mai

Android四大组件之一Service介绍-android学习之旅(十二)

基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService启动并把绑定该组件进行通信. 使用场景 后台下载文件,以及播放音乐等 注意 service运行在主线程中,他不会创建属于自己的线程,也不是运行在独立的线程中,所以在使用的时候,需要自己创建线程,而不应该直接使用,这样会造成ANR错误. service的两种形式 started service 其他组

Android成长日记-Android四大组件之Service组件的学习

1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它没有用户界面,所以绝不会到前台来.一旦Service被启动起来,它就与Activity一样.它完全具有自己的生命周期. A Service is an application component that can perform long-running operations in the back

Android 四大组件 (二) Service 使用

一. Service 介绍 Service属于android四大组件之一,在很多地方经常被用到.开启Service有两种不同的方式:startService和bindService.不同的开启方式,Service执行的生命周期方法也不同. 分 显示/隐示调用 ,但是官网推荐用显式的方式启动Service.下面 service使用 用的就是显示调用:注意事项用的就是隐示调用,在5.0系统上隐示调用会报错.所以这里只介绍使用显示调用. 不能再service里做耗时操作,否则ANR:需要开辟子线程进行

Android 四大组件之Service

---恢复内容开始--- 1,Service的生命周期 onCreate第一次创建service的时候调用. onStartCommand启动service的时候调用. onStart(This method was deprecated in API level 5. Implement onStartCommand(Intent, int, int) instead.) onDestroy销毁的时候调用. 2,进程优先级(由高到低):(红色字体的两个进程是经常被系统回收的两个进程)    1

Android四大组件之Service的介绍

Service的基本认识 Service是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件.Service可由其他应用组件启动,而且即使用户切换到其他应用,Service仍将在后台继续运行.Service主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务.必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态. Service和Activity很相似,但是区别在于:Service一直在后台运行,没有用户界面,所以不会到前台,如果Service被