- 浏览: 386841 次
- 性别:
- 来自: 印度
文章分类
最新评论
-
天天来注册:
...
多线程的死锁 -
memoryisking:
可以看看这篇文章,这个是struts教程网上一个简单的例子,构 ...
Java5中的线程池实例讲解 -
a123159521:
菜鸟不再菜 写道楼主很明显没有说明守护线程到底是怎么服务Use ...
守护线程总结 -
jjruanlili:
要搞个executor和nio的结合,差不多
Java5中的线程池实例讲解 -
josico:
纠正楼主一个问题‘如果四个队员都在忙时,再有新的任务,这个小组 ...
线程池ThreadPoolExecutor使用简介
介绍
在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver
活动(Activity) - 用于表现功能
服务(Service) - 相当于后台运行的 Activity
广播(Broadcast) - 用于发送广播
广播接收器(BroadcastReceiver) - 用于接收广播
Intent - 用于连接以上各个组件,并在其间传递消息
1、演示 Activity 的基本用法,一个 Activity 启动另一个 Activity,启动另一个 Activity 时为其传递参数,被启动的 Activity 返回参数给启动者的 Activity
在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver
活动(Activity) - 用于表现功能
服务(Service) - 相当于后台运行的 Activity
广播(Broadcast) - 用于发送广播
广播接收器(BroadcastReceiver) - 用于接收广播
Intent - 用于连接以上各个组件,并在其间传递消息
1、演示 Activity 的基本用法,一个 Activity 启动另一个 Activity,启动另一个 Activity 时为其传递参数,被启动的 Activity 返回参数给启动者的 Activity
Main.java 代码 package com.webabcd.activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; public class Main extends Activity { TextView txt; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.main); txt = (TextView) this.findViewById(R.id.txt); txt.setText("Activity 1"); Button btn = (Button) this.findViewById(R.id.btn); btn.setText("启动另一个Activity"); btn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // 实例化 Intent,指定需要启动的 Activity Intent intent = new Intent(); intent.setClass(Main.this, MyActivity.class); // 实例化 Bundle,设置需要传递的参数 Bundle bundle = new Bundle(); bundle.putString("name", "webabcd"); bundle.putDouble("salary", 100.13); // 将需要传递的参数赋值给 Intent 对象 intent.putExtras(bundle); // startActivity(intent); // 启动指定的 Intent(不等待返回结果) // Main.this.finish(); // 启动指定的 Intent,并等待返回结果 // 其中第二个参数如果大于等于零,则返回结果时会回调 onActivityResult() 方法 startActivityForResult(intent, 0); } }); Log.d("MyDebug", "onCreate"); } // 被启动的 Activity 返回结果时的回调函数 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK){ Bundle bundle = data.getExtras(); String name = bundle.getString("name"); double salary = bundle.getDouble("salary"); txt.setText("Activity 1" + "\n名字:" + name + "\n薪水:" + String.valueOf(salary)); } } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.d("MyDebug", "onStart"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.d("MyDebug", "onStop"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.d("MyDebug", "onRestart"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.d("MyDebug", "onPause"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.d("MyDebug", "onResume"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.d("MyDebug", "onDestroy"); } } MyActivity.java 代码 package com.webabcd.activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; // 被另一个 Activity 所启动的 Activity public class MyActivity extends Activity { Intent intent; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.main2); // 获取启动者传递过来的参数 intent = this.getIntent(); Bundle bundle = intent.getExtras(); String name = bundle.getString("name"); double salary = bundle.getDouble("salary"); TextView txt = (TextView) this.findViewById(R.id.txt); txt.setText("Activity 2" + "\n名字:" + name + "\n薪水:" + String.valueOf(salary)); Button btn = (Button) this.findViewById(R.id.btn); btn.setText("返回前一个Activity"); btn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { // 返回参数给启动者 MyActivity.this.setResult(Activity.RESULT_OK, intent); MyActivity.this.finish(); } }); } } AndroidManifest.xml 代码 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.webabcd.activity" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 如果有需要用到的 Activity ,则都要在这里做相应的配置 --> <activity android:name=".MyActivity" android:label="Activity 2" /> </application> <uses-sdk android:minSdkVersion="3" /> </manifest> 2、Service, Broadcast, BroadcastReceiver 的演示 Main.java 代码 package com.webabcd.service; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; /* * startService() 和 bindService() 的区别 * startService() - 正常理解就好 * bindService() - 使当前上下文对象(本例中就是 Activity)通过一个 ServiceConnection 对象邦定到指定的 Service 。这样,如果上下文对象销毁了的话,那么其对应的 Service 也会被销毁 */ public class Main extends Activity implements OnClickListener { private TextView txtMsg; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setTitle("android 之 service"); this.findViewById(R.id.btnStart).setOnClickListener(this); this.findViewById(R.id.btnStop).setOnClickListener(this); this.findViewById(R.id.btnBind).setOnClickListener(this); this.findViewById(R.id.btnUnbind).setOnClickListener(this); txtMsg = (TextView)this.findViewById(R.id.txtMsg); // 实例化自定义的 BroadcastReceiver receiver = new UpdateReceiver(); IntentFilter filter = new IntentFilter(); // 为 BroadcastReceiver 指定 action ,使之用于接收同 action 的广播 filter.addAction("com.webabcd.service.msg"); // 以编程方式注册 BroadcastReceiver 。配置方式注册 BroadcastReceiver 的例子见 AndroidManifest.xml 文件 // 一般在 OnStart 时注册,在 OnStop 时取消注册 this.registerReceiver(receiver, filter); // this.unregisterReceiver(receiver); } @Override public void onClick(View v) { Intent intent = new Intent(Main.this, MyService.class); switch (v.getId()) { case R.id.btnStart: this.startService(intent); break; case R.id.btnStop: this.stopService(intent); break; case R.id.btnBind: this.bindService(intent, conn, Context.BIND_AUTO_CREATE); break; case R.id.btnUnbind: this.unbindService(conn); break; } } // bindService() 所需的 ServiceConnection 对象 private ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { } @Override public void onServiceDisconnected(ComponentName className) { } }; private String msg=""; private UpdateReceiver receiver; // 实现一个 BroadcastReceiver,用于接收指定的 Broadcast public class UpdateReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { msg = intent.getStringExtra("msg"); txtMsg.append(msg + "\n"); } } } MyService.java 代码 package com.webabcd.service; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; // 演示 Service 的生命周期。具体信息运行程序后在 LogCat 中查看 public class MyService extends Service { @Override public IBinder onBind(Intent intent) { Log.d("MyDebug", "onBind"); sendMsg("onBind"); // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); Log.d("MyDebug", "onCreate"); sendMsg("onCreate"); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.d("MyDebug", "onDestroy"); sendMsg("onDestroy"); } @Override public void onRebind(Intent intent) { // TODO Auto-generated method stub super.onRebind(intent); Log.d("MyDebug", "onRebind"); sendMsg("onRebind"); } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Log.d("MyDebug", "onStart"); sendMsg("onStart"); } @Override public boolean onUnbind(Intent intent) { Log.d("MyDebug", "onUnbind"); sendMsg("onUnbind"); // TODO Auto-generated method stub return super.onUnbind(intent); } // 发送广播信息 private void sendMsg(String msg){ // 指定广播目标的 action (注:指定了此 action 的 receiver 会接收此广播) Intent intent = new Intent("com.webabcd.service.msg"); // 需要传递的参数 intent.putExtra("msg", msg); // 发送广播 this.sendBroadcast(intent); } } MyBootReceiver.java 代码 package com.webabcd.service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyBootReceiver extends BroadcastReceiver { // 用于接收满足条件的 Broadcast(相应的 Broadcast 的注册信息详见 AndroidManifest.xml ,当系统启动完毕后会调用这个广播接收器) @Override public void onReceive(Context arg0, Intent arg1) { Log.d("MyDebug", "onReceive"); // 启动服务 Intent service = new Intent(arg0, MyService.class); arg0.startService(service); } } AndroidManifest.xml 代码 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.webabcd.service" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" 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 ,则都要在这里做相应的配置 --> <service android:name=".MyService"></service> <!-- 注册一个 BroadcastReceiver 其 intent-filter 为 android.intent.action.BOOT_COMPLETED(用于接收系统启动完毕的 Broadcast) --> <receiver android:name=".MyBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> <!-- 接受系统启动完毕的 Broadcast 的权限 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-sdk android:minSdkVersion="3" /> </manifest> OK
- Android.rar (1.7 MB)
- 下载次数: 52
发表评论
-
使用flurry实时收集Android程序运行情况
2010-11-30 15:36 31441. 注册 http://www.flurry.com/ ... -
浅析Android线程模型
2010-11-07 19:44 13171引言 Android一词本义指机器人,Google于2007 ... -
利用Java实现压缩与解压缩(zip、gzip)支持中文路径
2010-11-03 10:23 2817zip扮演着归档和压缩两 ... -
Java压缩Zlib,Gzip,Zip支持J2ME
2010-11-03 10:15 4726/* * 文件名: ZipUtil.java ... -
android adapter 深刻分析
2010-10-18 13:14 1620我在刚玩android 时候,对这个adapter很不理解,到 ... -
详解 Android 的 Activity 组件
2010-10-14 09:22 1168http://www.ibm.com/developerwor ...
相关推荐
在Android应用开发中,Service和Activity是两个非常重要的组件。Service用于在后台执行长时间运行的任务,而Activity则负责用户界面交互。在某些场景下,Service和Activity之间需要进行数据共享,例如更新UI、传递...
在Android应用开发中,Activity、Service和BroadcastReceiver是三大核心组件,它们各自承担着不同的职责。Activity作为用户界面,Service用于后台持久运行的任务,而BroadcastReceiver则负责接收系统或自定义广播...
本主题将深入探讨如何使用Service以及BroadcastReceiver来实现特定的功能:当Service检测到某个函数的状态变化时,通过Broadcast发送通知,进而启动一个新的Activity。 首先,让我们了解`Service`。在Android中,...
在Android应用开发中,Activity和Service是两个关键组件。Activity代表用户界面,而Service则用于在后台执行长时间运行的任务,不直接与用户交互。在实际项目中,常常需要多个Activity与一个Service进行通信,比如本...
在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...
在Android系统中,Service和BroadcastReceiver是两个非常重要的组件,它们是实现应用程序后台运行和通信的关键。本篇文章将深入探讨这两个组件的原理、使用方法以及它们在实际开发中的应用。 首先,我们来看Service...
在Android应用开发中,Activity、BroadcastReceiver和Service是三大核心组件,它们构成了应用程序与用户交互、后台处理以及系统间通信的基础。本综合Demo旨在详细解析这三者如何协同工作,特别是涉及广播的静态注册...
在Service中设置BroadcastIntent的extras,然后在Activity的BroadcastReceiver中读取这些数据。这种方式确保了数据的安全传输。 此外,为了优化用户体验,我们需要注意在Activity的生命周期方法中正确管理...
本篇文章将详细讲解如何在Android中创建一个常驻Service,并结合BroadcastReceiver实现线程间(Service Thread与Activity)的异步通信。 一、创建Service 1. 定义Service类:首先,我们需要创建一个继承自`Service...
总结起来,Service BroadcastReceiver实例展示了如何在Android应用中使用Service和BroadcastReceiver进行通信。Service负责后台任务,BroadcastReceiver监听事件,两者结合可以实现灵活的组件间通信。通过理解并实践...
总结,BroadcastReceiver是Android系统中实现组件间通信的重要工具,特别适用于在Activity之间传递数据。通过创建BroadcastReceiver,注册它,发送Broadcast,以及在接收端处理数据,我们可以轻松地在两个不同的...
例如,在BroadcastService中,Service可以通过BroadcastReceiver广播消息,Activity注册该Receiver并监听特定事件,从而实现数据交换。 5. **LocalBroadcastManager**: 对于应用内部通信,LocalBroadcastManager...
1. **创建BroadcastReceiver:** 在Activity或Service中定义BroadcastReceiver,并重写onReceive()方法来处理接收到的广播。 2. **注册BroadcastReceiver:** 在需要接收广播的地方注册BroadcastReceiver,可以在...
本资料“android service 通过broadcast通知activity.zip”显然是关于如何在Service和Activity之间通过Broadcast进行通信的教程。 首先,我们要理解BroadcastReceiver的基本概念。BroadcastReceiver是Android系统中...
在Android开发中,Intent和BroadcastReceiver是两个至关重要的组件,它们构成了Android系统中不同组件间通信的核心机制。Intent用于在应用程序的不同组件之间传递消息,而BroadcastReceiver则是一种响应这些消息的...
通过这个"Service broadcast demo"项目,初学者能够了解到Service和BroadcastReceiver的基本概念、使用方法和它们在实际场景中的应用。通过实际操作,可以加深对Android后台服务和事件驱动编程的理解,为后续的...
在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听系统或应用程序发布的广播消息。BroadcastReceiver能够使应用在不运行的情况下对特定事件做出响应,从而实现跨应用通信。本示例将详细...
1. **使用Intent**: 可以通过发送Broadcast Intent的方式,让Service广播一条消息,然后在Activity中注册一个BroadcastReceiver来接收这个消息。首先在Service中创建并发送Intent,然后在Activity中注册...
在Android应用开发中,Service和Activity是两个非常重要的组件,它们分别用于后台长时间运行的任务和服务交互。本示例"Android Service与Activity会话Demo"旨在教你如何在Android Studio中实现Service与Activity之间...
在Activity中,我们使用bindService()方法连接到Service,并通过onServiceConnected()回调来访问Service提供的接口: ```java Intent intent = new Intent(this, MyService.class); bindService(intent, ...