Android 简单Activity和Service的交互代码

转载 2012年03月21日 15:50:33

http://rayln.iteye.com/blog/1179463

Activity如何互相交互, 更新Acivity控件?
请看例子:

Broadcast1Activity.java

Java代码  收藏代码
    package com.cn;  
      
    import android.app.Activity;  
    import android.content.Intent;  
    import android.content.IntentFilter;  
    import android.os.Bundle;  
    import android.view.View;  
    import android.view.View.OnClickListener;  
    import android.widget.Button;  
      
    public class Broadcast1Activity extends Activity {  
        /** Called when the activity is first created. */  
        private static String SMS_ACTION = "com.webabcd.service.msg";  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
            Button btn1 = (Button)findViewById(R.id.button1);  
            btn1.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    SMSReceiver r = new SMSReceiver();  
                    IntentFilter intent = new IntentFilter();  
                    intent.addAction(SMS_ACTION);  
                    Broadcast1Activity.this.registerReceiver(r, intent);  
                }  
            });  
        }  
        //button onclick事件  
        public void startService(View v){  
            Intent i = new Intent(Broadcast1Activity.this,StartService.class);  
            System.out.println("111");  
            this.startService(i);  
            System.out.println("222");  
        }  
    }  



SMSReceiver.java (广播接收类)

Java代码  收藏代码
    package com.cn;  
      
    import android.content.BroadcastReceiver;  
    import android.content.Context;  
    import android.content.Intent;  
    import android.widget.Button;  
      
    public class SMSReceiver extends BroadcastReceiver {  
      
        @Override  
        public void onReceive(Context context, Intent intent) {  
            System.out.println("have recevie message");  
            Broadcast1Activity b = (Broadcast1Activity)context;  
            Button button1 = (Button)b.findViewById(R.id.button1);  
            System.out.println(button1.getText());  
        }  
      
    }  




StartService.java

Java代码  收藏代码
    package com.cn;  
      
    import android.app.Service;  
    import android.content.Intent;  
    import android.os.IBinder;  
      
    public class StartService extends Service {  
      
        @Override  
        public IBinder onBind(Intent intent) {  
            System.out.println("onBind");  
            return null;  
        }  
          
        @Override  
        public void onCreate() {  
            System.out.println("onCreate");  
            super.onCreate();  
        }  
      
        @Override  
        public void onStart(Intent intent, int startId) {  
            System.out.println("onStart");  
            sendMsg("send msg");  
            super.onStart(intent, startId);  
        }  
      
        @Override  
        public int onStartCommand(Intent intent, int flags, int startId) {  
            System.out.println("onStartCommand");  
            return super.onStartCommand(intent, flags, startId);  
        }  
      
        public void sendMsg(String msg){  
             // 指定广播目标的 action (注:指定了此 action 的 receiver 会接收此广播)     
            Intent intent = new Intent("com.webabcd.service.msg");     
            // 需要传递的参数     
            intent.putExtra("msg", msg);     
            // 发送广播     
            this.sendBroadcast(intent);     
        }  
      
    }  



AndroidManifest.xml

Java代码  收藏代码
    <?xml version="1.0" encoding="utf-8"?>  
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
          package="com.cn"  
          android:versionCode="1"  
          android:versionName="1.0">  
        <uses-sdk android:minSdkVersion="8" />  
      
        <application android:icon="@drawable/icon" android:label="@string/app_name">  
            <activity android:name=".Broadcast1Activity"  
                      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=".StartService" />  
        </application>  
    </manifest>  



该例子为完整的从Activity启动一个广播接收类, 然后启动一个Service, 并且从Service中发送消息到Activity


Android中远程Service和Activity交互

Android四大组件之二: Activity和Service, 两者在很多情况下, 不是分裂的,那么,它们如何联系起来呢?通常使用IBinder两者建立关联, 方法如下: 为了描述两者的通讯方式,...
  • zaijzhgh
  • zaijzhgh
  • 2017年04月19日 22:01
  • 457

android activity和service的交互介绍

android开发中,实现activity和service的相互交互
  • hhhccckkk
  • hhhccckkk
  • 2015年03月03日 14:54
  • 19124

Activity和Service的交互方式

在开发过程中,经常会遇到Activity和Service进行相互通信、交换数据的需要,最常见的比如音乐播放器,使用Service在后台进行音乐播放,前台使用Activity显示界面,点击前台控件后需要...
  • zh175578809
  • zh175578809
  • 2017年06月04日 02:31
  • 948

Android中Activity和Service简单交互(通过广播机制)

java代码: ServiceActivity代码: package com.cwb; import android.app.Activity; import an...
  • u010015108
  • u010015108
  • 2016年03月28日 17:21
  • 698

Activity和Service之间的交互

交互的原理: activity 和 service中各自定义一个handler,通过过messenger类来转化IBinder或是Handler,最后在handler中处理消息: 代码涉及的页面比...
  • huang_xiao_yu
  • huang_xiao_yu
  • 2015年10月28日 22:37
  • 850

android开发之使用Messenger实现service与activity交互

service与activity交互的方式有多种,这里说说使用Messenger来实现两者之间的交互。Service程序public class MessengerService extends Se...
  • u012702547
  • u012702547
  • 2015年07月21日 17:35
  • 1463

用Messenger实现Activity与Service的信息交互

Android环境下,基于Messenger技术实现Activity与Service数据交换的实例程序参考
  • u013615937
  • u013615937
  • 2016年07月21日 14:58
  • 448

Android中程序与Service交互的方式(二)-五种交互方式

上一篇文章 简述了Service的一些基础知识以及Service和Thread的简单区别,本文将着重讲解与Service交互的五种基本方式:广播交互、共享文件交互、Mssenger(信使)交互、自定义...
  • lzt623459815
  • lzt623459815
  • 2013年01月24日 14:55
  • 4355

android service和activity跨进程通讯

一,service的两种启动方式 service 作为一个应用程序组件,则意味着它可以在不同组件间、甚至在 不同应用间进行复用,还意味着可以配置成在另一个独立的进程中运行。 startService...
  • aa841538513
  • aa841538513
  • 2016年08月15日 16:10
  • 4224

使用Handler实现Activity和Service之间的交互

在开发应用的时候,我们有时候需要Service来处理后台任务。同时需要两者之间的实时交互,比如说下载的时候我们需要实时地更新Notification的下载进度。我们可以通过BroadcastRecei...
  • bfboys
  • bfboys
  • 2016年09月18日 21:15
  • 1097
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 简单Activity和Service的交互代码
举报原因:
原因补充:

(最多只允许输入30个字)