`
yehoubin
  • 浏览: 24345 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

activity service receiver 的应用

阅读更多


package com.ye.HttpClientTest;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;

public class HttpClientTest extends Activity implements Button.OnClickListener {
    /** Called when the activity is first created. */
protected static final int GUIUPDATEIDENTIFIER = 0x101;
public TextView accept;
public Button send;
public EditText showEditText;
public ProgressBar progressBar;
public String urlString,dataString;
private String msg="";

public class HttpClientReceiver extends BroadcastReceiver{
//接收广播
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.v("HttpClientTest", "onReceive");
progressBar.setVisibility(View.GONE);
msg = intent.getStringExtra("msg");
accept.setText(msg);

}
     }

    @Override
    public void onCreate(Bundle savedInstanceState) {
    Log.i("HttpClientTest", "onCreate()");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        accept= (TextView)findViewById(R.id.accept);
        send = (Button) findViewById(R.id.send);
        showEditText = (EditText) findViewById(R.id.show);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
        progressBar.setVisibility(View.GONE);
        send.setOnClickListener(this);
       
        //注册广播器
        IntentFilter filter=new IntentFilter("com.ye.service.msg");
        HttpClientReceiver receiver=new HttpClientReceiver();
        registerReceiver(receiver,filter);
       
    }

@Override
public void onClick(View v) {

// TODO Auto-generated method stub
Log.i("HttpClientTest", "onClick()");
progressBar.setVisibility(View.VISIBLE);
urlString = "http://api.showji.com/locating/?m="+showEditText.getText()+"&output=text";
Intent intent = new Intent("com.ye.HttpClientTest.HttpClientTestService");
Bundle bundle = new Bundle();
bundle.putString("url", urlString);
intent.putExtras(bundle);
intent.setClass(HttpClientTest.this, HttpClientTestService.class);

startService(intent);
}
}

package com.ye.HttpClientTest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;

public class HttpClientTestService extends Service {

public String resultString = "";
public String urlString = "";
String websiteData = null;
DefaultHttpClient client;
Intent intent;

@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}

@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Log.v("HttpClientTestService", "in  onStart()");
Bundle bundle = intent.getExtras();
urlString = bundle.getString("url");
new Thread(mRunnable).start();

}
Runnable mRunnable = new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
Log.i("Thread", "Thread is start");
resultString = getUrlData(urlString);
sendMsg(resultString);

}
};

//onCreate在service初始化的时候被调一次,直到service生命周期的结束
@Override
public void onCreate() {
Log.i("HttpClientTestService", "in  onCreate()");
client = new DefaultHttpClient();
intent =  new Intent("com.ye.service.msg");
}


public String getUrlData(String url){  
    try {   
    URI uri = new URI(url);  
    HttpGet method = new HttpGet(uri);  
    HttpResponse res = client.execute(method);  
    InputStream data = res.getEntity().getContent(); 
    websiteData = generateString(data);
    } catch (ClientProtocolException e) {
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace(); 
    } catch (URISyntaxException e) {
    // TODO Auto-generated catch block 
    e.printStackTrace();
    } 
    return websiteData;
    }

public String generateString(InputStream stream) { 
InputStreamReader reader = new InputStreamReader(stream); 
BufferedReader buffer = new BufferedReader(reader);  
StringBuilder sb = new StringBuilder(); 
try { 
String cur;
while ((cur = buffer.readLine()) != null) { 
sb.append(cur + "\n");
}
} catch (IOException e) { 
// TODO Auto-generated catch block
e.printStackTrace();

try {
stream.close();
buffer.close();
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace();

return sb.toString(); 
}


// 发送广播信息
    private void sendMsg(String msg){
    Log.i("HttpClientTestService", "sendMsg()");
        // 指定广播目标的 action (注:指定了此 action 的 receiver 会接收此广播)
       
        // 需要传递的参数
        intent.putExtra("msg", msg);
        // 发送广播
        this.sendBroadcast(intent);
    }

}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.ye.HttpClientTest"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
   
        <activity android:name=".HttpClientTest"
        android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
<service android:name="HttpClientTestService">
            <intent-filter>
                <action android:name="com.ye.HttpClientTest.HttpClientTestService"/>
            </intent-filter>
   </service>
    </application>
   
<uses-permission android:name="android.permission.INTERNET" />

</manifest>
分享到:
评论

相关推荐

    四大组件 Activity Service content provider broadcast receiver

    ### 四大组件详解:Activity、Service、Content Provider与Broadcast Receiver #### 一、Activity **定义:** Activity是Android应用程序中的四大基本组件之一,它代表一个屏幕界面,用户可以直接与其进行交互。每...

    安卓锁屏九宫格锁屏解锁壁纸相关-按下电源键再次按下时弹出自定义界面。Activityservicereceiver.zip

    ActivityServiceReceiver这个名字暗示了这个项目可能结合了Activity和Service的特点,即在Activity(锁屏界面)上响应某个事件(电源键二次点击),启动或控制一个Service来显示自定义界面。 在“Android_...

    activity service 数据交互

    在Android应用开发中,Activity和服务(Service)是两个核心组件,它们之间经常需要进行数据交互。Activity作为用户界面,提供与用户的交互,而Service则在后台执行长时间运行的任务,不依赖于用户界面。本篇文章将...

    Activity+service+receiver

    在Android系统中,Activity、Service和Receiver是三个关键组件,它们构成了Android应用程序的核心架构。本文将深入探讨如何利用这三个组件实现电源键双击后显示自定义界面的功能。 首先,Activity是用户与应用交互...

    Android代码-按下电源键再次按下时弹出自定义界面。Activityservicereceiver.zip

    虽然在上述描述中并未直接提及Service,但考虑到电源键事件可能需要长时间监听,使用Service可以确保即使用户离开应用,监听仍然继续。在Service中同样可以创建BroadcastReceiver并处理电源键事件。服务需要在适当...

    android多个activity和一个service通信

    在Android应用开发中,Activity和Service是两个关键组件。Activity代表用户界面,而Service则用于在后台执行长时间运行的任务,不直接与用户交互。在实际项目中,常常需要多个Activity与一个Service进行通信,比如本...

    service receiver notification播放器

    在Android系统中,Service接收器(Service Receiver)和Notification播放器是两个重要的概念,它们在构建应用程序时起着至关重要的作用。Service接收器允许应用程序在后台执行任务,即使用户没有直接与应用交互。而...

    Activity、BoradcastReceiver、Service综合Demo

    在Android应用开发中,Activity、BroadcastReceiver和Service是三大核心组件,它们构成了应用程序与用户交互、后台处理以及系统间通信的基础。本综合Demo旨在详细解析这三者如何协同工作,特别是涉及广播的静态注册...

    Android-Service与Activity传值

    在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...

    Service向Activity传值(kotlin)

    在Android应用开发中,Service和Activity是两个非常重要的组件。Service用于在后台执行长时间运行的任务,而Activity则负责用户界面交互。在某些场景下,我们可能需要Service与Activity之间进行数据传递,例如本例中...

    service与activity之间的通信

    在Android开发中,Service和Activity是两个非常重要的组件。Service主要负责在后台执行长时间运行的任务,而Activity则作为用户交互的界面。它们之间的通信是Android应用中常见的需求,例如播放音乐、下载数据等。本...

    Service和Activity通过Broadcast共享数据

    在Android应用开发中,Service和Activity是两个非常重要的组件。Service用于在后台执行长时间运行的任务,而Activity则负责用户界面交互。在某些场景下,Service和Activity之间需要进行数据共享,例如更新UI、传递...

    Android高级应用源码-按下电源键,再次按下时,弹出自定义界面。Activity+service+receiver.rar

    Activity+service+receiver"项目中涉及的主要知识点。这个项目展示了如何巧妙地利用Android的系统广播、Service和Activity来实现自定义功能,对于进阶Android开发者来说,这是一个很好的学习案例。

    service之service传递数据给Activity

    在Android应用开发中,Service是后台运行的一种组件,它可以在用户界面关闭或者应用不处于前台时继续执行任务。Service主要用于长时间运行的操作,如播放音乐、网络通信等。然而,Service与Activity之间的通信是必不...

    Android Service与Activity交互

    在Android应用开发中,Service和Activity是两个非常重要的组件,它们各自扮演着不同的角色。Service主要负责在后台执行长时间运行的任务,而Activity则用于与用户交互。本示例"Android Service与Activity交互"旨在...

    初识 Service(三) 演示:Service给 Activity传递消息

    在Android应用开发中,`Service` 是一个非常重要的组件,它允许应用程序在后台长时间运行,即使用户界面(UI,如Activity)已经关闭。本篇我们将深入探讨如何在Service与Activity之间进行交互,尤其是Service如何向...

    Service向Activity传值(java)

    在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。有时,我们可能需要在`Service`中处理某些数据,并将这些数据传递给`...

    利用广播Broadcast Receiver,在2个不同的Activity传递数据

    这使得BroadcastReceiver成为在不同组件间通信的有效手段,包括Activity、Service等。 要实现两个Activity之间的数据传递,我们需要遵循以下步骤: 1. **创建BroadcastReceiver**: 首先,在需要发送数据的...

    本示例 利用Broadcast Receiver 启动Service

    本示例主要讲解如何利用BroadcastReceiver来启动一个Service,同时启动一个Activity来显示服务启动成功的提示。 首先,理解BroadcastReceiver的原理。BroadcastReceiver是Android中的一个非常轻量级的组件,它用于...

    Android高级应用源码-按下电源键,再次按下时,弹出自定义界面。Activity+service+receiver.zip

    为了保证即使应用被后台杀死,仍然能监听电源键事件,可以使用Service。创建一个Service,让其在后台运行,监听电源键事件。当ACTION\_SCREEN\_OFF到来时,Service可以保存一些状态信息,以便在ACTION\_SCREEN\_ON...

Global site tag (gtag.js) - Google Analytics