Activity与Service交互(一)

方法一:

使用ASB模型

1.Activity启动Service

2.Service发送广播

3.在Activity上注册BroadcastReceiver接受广播

public class MainActivity extends Activity {
	TextView tv;
	MyReceiver receiver;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv=(TextView) findViewById(R.id.tv);
	}
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		receiver=new MyReceiver();
		IntentFilter filter=new IntentFilter();
		filter.addAction("ISAAC_MYSERVICE");//注册
		registerReceiver(receiver, filter);//注销
	}
	public void start(View v){
		Intent intent =new Intent(this,MyService.class);
		startService(intent);
	}
	public void stop(View v){
		Intent intent =new Intent(this,MyService.class);
		stopService(intent);
	}
	public class MyReceiver extends BroadcastReceiver{

		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			String action =intent.getAction();
			if("ISAAC_MYSERVICE".equals(action)){
				String time = intent.getStringExtra("time");
				tv.setText(time);
			}
		}

	}
}

public class MyService extends Service {
	/**
	 * onCreate()
	 * onStartCommand
	 * onDestroy()
	 */

	Handler h=new Handler();

	public MyService() {
	}
	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		Log.i("boom","onCreate()");
		h.postDelayed(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				//发送广播,把getServiceTime()发送出去
				Intent intent = new Intent("ISAAC_MYSERVICE");//别跟系统重名
				intent.putExtra("time", getServiceTime());
				sendBroadcast(intent);
				h.postDelayed(this, 1000);//每个1秒发一次
			}
		},1000);
	}
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		// TODO Auto-generated method stub
		Log.i("boom","onStartCommand");
		return super.onStartCommand(intent, flags, startId);
	}
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		h.removeCallbacksAndMessages(null);
		Log.i("boom","onDestroy()");
	}
	String getServiceTime(){
		SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:SS");
		return sdf.format(new Date());
	}
	@Override
	public IBinder onBind(Intent intent) {
		// TODO: Return the communication channel to the service.
		throw new UnsupportedOperationException("Not yet implemented");
	}
}
时间: 2024-10-15 08:13:06

Activity与Service交互(一)的相关文章

Android四大组件应用系列——Activity与Service交互实现APK下载

Servic与Activity相比它没有界面,主要是在后台执行一些任务,Service有两种启动方法startService()和bindService(),startService方式Service不可交互,可一直在后台即便应用结束,bindService方式可通过ServiceConnection获得运行的Service实例的方式实现Activity和Service之间的交互,通常Activity退出则绑定的服务也就取消了.我们可以通过同时执行启动服务和绑定服务的方式实现Service交互同

Activity和Service交互之bindService(回调更新UI)

一.回调接口 public interface OnProgressListener { void onProgress(int progress); } 二.Service代码 public class MyService extends Service { private int progress = 0; private OnProgressListener onProgressListener; class DownLoadBinder extends Binder{ public My

Activity和Service交互

本人常用的三种,不足之处希望大家多多提出宝贵意见 第一种Handler: Activity import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.

Activity与Service进行数据交互

Android启动Service有两种方法,一种是startService,一种是bindService.生命周期如下: 执行startService时,调用者如果没有stopService,Service会一直在后台运行.多次调用startService,该Service只能被创建一次,即该Service的onCreate方法只会被调用一次.但是每次调用startService,onStartCommand方法都会被调用. 执行bindService时,调用者调用unbindService方法

android activity和service的交互介绍

android开发中,作为4大组件的service在开发中经常会使用到.很多时候,我们的activity和service之间需要进行相应的交互,activity需要调用service里面的方法实现某些功能,service需要调用activity的方法,实现界面更新等的交互. 实现2者之间相互交互的主要方式是:service中有个类部类继承Binder,然后提供一个公有方法,返回当前service的实例. activity通过bindService来开启一个service,service通过onB

Android基础笔记(十一)- Service基础和注意事项以及Activity与Service的通信

Service的基本概念 为什么要有Service Service的基本用法 电话窃听器的小案例 Service和Activity通信 Service和Thread的关系 向光明而行! Service的基本概念 Service是Android的四大组件之一,在每一个应用程序中都扮演者非常重要的角色. 它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务.必要的时候,我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态. 既然都是被用于处理耗时的操作,那么我们什么

Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)

转载于:http://blog.csdn.net/byxdaz/article/details/9708491 http://blog.csdn.net/q876266464/article/details/19641251 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,Broadcast Receiver广播接收器. 一.了解四大基本组件 Activity : 应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以

第四章 Android开发三大基石—Activity、Service和Handler(1)

第四章 Android开发三大基石-Activity.Service和Handler 学习Android开发,首先就不得不学习Activity和Service这两个组件.Activity是有界面的程序,几乎承载着用户对应用程序的所有操作.而Service是没有界面的程序,它是所谓的服务,也叫后台程序.掌握好它们,是我们学习Android开发必不可少的环节.Handler是Android开发中最常用的消息机制,几乎所有应用程序都会使用Handler传递消息.可以说,想要学习Android应用开发,

Activity与Service的那些事

服务作为Android的四大组件之一,它并不像Activity那样高调(使用频繁),它就是那个默默无闻的工作者. 由于不怎么用到,所以关于它的使用很容易忘记,现在有空就将它记录下来,方便后期查看.        服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行那些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使当程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行. 不过需要注意的是,服务并不是运行在一个