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的Demo
这是一个介绍android四大组件中Service的ppt文档,里面阐述了该组件的基本应用,非常有价值。
Android四大组件之ServiceService的生命周期被启动(startService)的服务的生命周期:被绑定(bindService)的服务的生命周期:被启动又被绑定的服务的生命周期:实例布局创建Service类启动ServiceDemo下载 android开发...
service的启动,停止,绑定,取消绑定,以及IntentService的生命周期走向测试和IntentService与访问者信息通信过程,不清楚之处请参阅我的博客《Android开发四大组件之Service总结》
今天小编就为大家分享一篇关于Android四大组件之Service详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
Android四大组件简述demo用例。
主要介绍了Android四大组件之Service(服务)的用法,结合实例形式详细分析了Service的基本概念,类型,用法与相关注意事项,需要的朋友可以参考下
android四大组件详细介绍,activity,service等从基础到应用开发,熟练的掌握android 组件的应用。
android service 四大组件 完整代码 非常好用 非常经典 完整的代码.
文档主要是讲Android开发的四大组件详解,包含 Activity详解 ,Service详解,Broadcast Receiver详解,Content Provider详解 外加一个重要组件 intent的详解。 文章内容来自网络,本文是一个总结性文章。
Android四大组件——Service后台服务、前台服务、IntentService、跨进程服务、无障碍服务、系统服务
博文android基础知识05:四大组件之service 02:远程调用中关于远程调用service的实例程序
根据博客内容,写的一个android 服务实例程序
android service的实例程序,用于博文http://blog.csdn.net/xianming01/article/details/7341877
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。
简要解释一下activity、 intent 、intent filter、service、Broadcast、BroadcaseReceiver
Android四大基本组件介绍与生命周期Android四大基本组件分别是Activity,Service服务,ContentProvider内容提供者,BroadcastReceiver广播接收器。 Android四大基本组件介绍与生命周期 Android四大基本组件分别是...
安卓四大组件 Service 服务