1 生命周期图
2 第一种 非绑定方式 startService
2.1 自定义 Service
package com.demoservice;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
public class FirstService extends Service {
MediaPlayer mplayer;
Binder binder=new Binder();
@Override
public IBinder onBind(Intent intent) {
// TODO 自动生成的方法存根
return binder;
}
@Override
public void onCreate() {
// TODO 自动生成的方法存根
super.onCreate();
mplayer=MediaPlayer.create(this, R.raw.music12);
Log.i("demo", "onCreate");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO 自动生成的方法存根
Log.i("demo", "onStartCommand");
mplayer.start();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
// TODO 自动生成的方法存根
Log.i("demo", "onDestroy");
mplayer.stop();
super.onDestroy();
}
}
2.2 注册 Service
<service
android:name="com.demoservice.FirstService">
<intent-filter >
<action android:name="michael.FIRSTSERVICE"/>
</intent-filter>
</service>
2.3 开启/关闭 Service
package com.demoservice;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
Button btn_start,btn_stop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_start=(Button)findViewById(R.id.btn_start);
btn_stop=(Button)findViewById(R.id.btn_stop);
final Intent intent=new Intent();
intent.setAction("michael.FIRSTSERVICE");
OnClickListener listener=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
if(v == btn_start)
{
startService(intent);
}else if(v==btn_stop)
{
stopService(intent);
}
}
};
btn_start.setOnClickListener(listener);
btn_stop.setOnClickListener(listener);
}
}
3 第二种 绑定方式 bindService
3.1 自定义 Service
package com.SecondService;
import com.demoservice.R;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
public class SecondService extends Service {
int count;
boolean quit=false;
MediaPlayer mplayer;
MyBinder binder=new MyBinder();
@Override
public IBinder onBind(Intent intent) {
// TODO 自动生成的方法存根
Log.i("demo", "onBind");
mplayer.start();
new Thread()
{
@Override
public void run() {
while(!quit)
{
try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}
count++;
Log.i("demo", String.valueOf(count));
}
}
}.start();
return binder;
}
@Override
public boolean onUnbind(Intent intent) {
Log.i("demo", "onUnbind");
quit=true;
return super.onUnbind(intent);
}
@Override
public void onRebind(Intent intent) {
Log.i("demo", "onRebind");
mplayer.start();
super.onRebind(intent);
}
@Override
public void onCreate() {
super.onCreate();
quit=false;
mplayer=MediaPlayer.create(this, R.raw.music12);
Log.i("demo", "onCreate");
}
@Override
public void onDestroy() {
Log.i("demo", "onDestroy");
mplayer.stop();
quit=true;
super.onDestroy();
}
class MyBinder extends Binder
{
public SecondService getService()
{
return SecondService.this;
}
public int getCount()
{
return count;
}
}
}
3.2 注册 Service
<service
android:name="com.SecondService.SecondService">
<intent-filter >
<action android:name="michael.SECONDSERVICE"/>
</intent-filter>
</service>
3.3 绑定/解绑Service
package com.SecondService;
import com.demoservice.R;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
SecondService mservice;
ServiceConnection conn=new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO 自动生成的方法存根
Log.i("demo", "onServiceDisconnected");
mservice=null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO 自动生成的方法存根
Log.i("demo", "onServiceConnecteds");
mservice = ((SecondService.MyBinder)service).getService();
}
};
Button btn_start,btn_stop,btn_get;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_start=(Button)findViewById(R.id.btn_start);
btn_get=(Button)findViewById(R.id.btn_get);
btn_stop=(Button)findViewById(R.id.btn_stop);
final Intent intent=new Intent();
intent.setAction("michael.SECONDSERVICE");
OnClickListener listener=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
if(v == btn_start)
{
bindService(intent, conn, BIND_AUTO_CREATE);
}else if(v==btn_stop)
{
unbindService(conn);
}else if(v==btn_get)
{
btn_get.setText(String.valueOf(mservice.binder.getCount()));
}
}
};
btn_start.setOnClickListener(listener);
btn_stop.setOnClickListener(listener);
btn_get.setOnClickListener(listener);
}
}
注:转载请注明出处 :) 毕竟代码是一个一个敲出来的啊,O(∩_∩)O~
分享到:
相关推荐
### Android四大组件之Service #### 一、Service概述与特性 Service是Android系统中的四大核心组件之一,与Activity、BroadcastReceiver以及ContentProvider并列。它主要用于执行长时间运行的任务或者后台操作,...
本篇文章将深入探讨四大组件之一的Service,并通过一个名为"servicesdemo"的示例项目来阐述其核心概念和使用方法。 Service是Android系统中的一个关键组件,它在后台运行,无需用户界面,可以执行长时间的任务,...
Android四大组件之ServiceService的生命周期被启动(startService)的服务的生命周期:被绑定(bindService)的服务的生命周期:被启动又被绑定的服务的生命周期:实例布局创建Service类启动ServiceDemo下载 android开发...
在"Android四大组件简述"这个项目中,你可以找到关于这些组件的示例代码和实践应用,通过学习和调试这些示例,可以更深入地理解四大组件的工作原理和使用方式。这将对提升你的Android开发技能大有裨益。
service的启动,停止,绑定,取消绑定,以及IntentService的生命周期走向测试和IntentService与访问者信息通信过程,不清楚之处请参阅我的博客《Android开发四大组件之Service总结》
在Android系统中,四大组件是构建应用程序的核心元素,它们分别是Activity、Service、BroadcastReceiver和Content Provider。这四个组件各自承担着不同的职责,共同构成了Android应用的骨架。 **Activity**是用户与...
Activity 是 Android四大组件中最复杂的,需要处理界面逻辑、事件响应、生命周期管理等多个方面。一个 Activity 占据当前的窗口,响应所有窗口事件,具备有控件、菜单等界面元素。 Service Service 服务是 Android...
这个实例程序源自博客文章《android基础知识05:四大组件之service 01实例程序2》,它为开发者提供了关于如何在Android应用中实现和使用Service的实践指导。 首先,Service是Android中的后台运行组件,它可以长时间...
今天我们将聚焦于"四大组件"之一的Service,详细探讨它在Android开发中的作用以及如何创建一个简单的Service实例。 Service组件是Android应用程序中运行在后台的无用户界面组件,用于执行长时间运行的操作或在后台...
Service是Android应用程序开发中的核心组件之一,它是四大组件(Activity、Service、BroadcastReceiver、ContentProvider)中的成员,专门设计用于在后台执行长时间运行的任务,不与用户界面直接交互。Service通常...
Service是Android系统中的四大组件之一,它是用于在后台执行长时间运行任务而没有用户界面的组件。Service生命周期由系统管理,可以被其他组件如Activity启动或绑定。以下是对Service的详细说明: 1. **Service的...
在Android应用开发中,四大组件是构建应用程序的基础,它们分别是Activity、Service、BroadcastReceiver和ContentProvider,还有Intent作为组件间通信的重要桥梁。下面我们将逐一详细解释这些组件。 **Activity详解...
在Android开发中,四大组件是应用程序的核心组成部分,它们分别是Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)。本篇文章将深入探讨Service组件及其与四大...
在Android开发中,四大组件是构建应用程序的核心元素,它们分别是:Activity、Service、BroadcastReceiver以及ContentProvider。这四个组件各自承担着不同的职责,是Android系统交互的基础。 1. **Activity**: ...
在Android应用开发中,四大组件是其核心构造块,它们分别是Activity、Service、BroadcastReceiver以及ContentProvider。这个名为“Android 四大组件图解”的PPT文档为初学者提供了一个全面且直观的理解这些组件的...
在"android基础知识05:四大组件之service 02:远程调用实例程序"中,我们探讨的是如何在不同的应用之间通过AIDL(Android Interface Definition Language)进行远程服务调用。AIDL是Android提供的一种机制,用于在...
总之,Android 四大组件共同构成了应用程序的功能框架,它们各自负责不同的职责,协同工作以实现丰富的功能和良好的用户体验。熟练掌握这些组件的使用和交互是开发高质量 Android 应用的基础。在实际开发中,开发者...