startService与bindService

转载 2012年03月26日 14:39:15


转自:http://blog.sina.com.cn/s/blog_695bab300100ulr3.html

运行service的方法有两种startService和bindService,区别startService的调用者和serice没有联系,及调用者结束后,service依然继续运行,而bindService组件结束后,service也结束。

该文主要讲的是使用startService启动服务。
在startService调用方法中,service的生命周期:
onCreate()->onStratCommand()->onStart()->服务->onDestroy()
说明:系统中不存在服务时,才执行oncreate方法,否则直接执行onStartCommand

首先创建服务程序,继承service基类
//文件名:servicejava
package jun.xiao;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.VideoView;

public classservice extends Service {

@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public voidonCreate() {
// TODOAuto-generated method stub
super.onCreate();
Log.i("Service","Oncreate");
}

@Override
public voidonDestroy() {
// TODOAuto-generated method stub
super.onDestroy();
Log.i("Service","OnDestroy");
}

@Override
public void onRebind(Intent intent) {
// TODO Auto-generated method stub
super.onRebind(intent);
}

@Override
public voidonStart(Intent intent, int startId) {
// TODOAuto-generated method stub
super.onStart(intent, startId);
Log.i("Service","OnStart");
MediaPlayerm=new MediaPlayer();
try{
m.setDataSource("/sdcard/test.mp3");
m.prepare();
m.start();
}
catch(Exceptione)
{
Log.i("播放音乐",e.getMessage());
}
}

@Override
public intonStartCommand(Intent intent, int flags, int startId){
// TODOAuto-generated method stub
Log.i("Service","OnStartCommand");
returnsuper.onStartCommand(intent, flags, startId);
}

@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
return super.onUnbind(intent);
}

}

创建activity,调用startService方法
//文件名:xiaotech.java
package jun.xiao;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class xiaotech extends Activity {
    
   @Override
    publicvoid onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
       Buttonstart=(Button)findViewById(R.id.button1);
       Buttonstop=(Button)findViewById(R.id.button2);
      start.setOnClickListener(lis);
      stop.setOnClickListener(lis);
    }
    privateButton.OnClickListener lis=new Button.OnClickListener()
    {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intentintent=new Intent(xiaotech.this,service.class);
switch(v.getId())
{
case R.id.button1:
startService(intent);
Toast.makeText(xiaotech.this, "开启服务",Toast.LENGTH_SHORT).show();
break;
case R.id.button2:
stopService(intent);
Toast.makeText(xiaotech.this, "停止服务",Toast.LENGTH_SHORT).show();
break;
}
}
    
   };
}

[转载]android之Service(1)startService

[转载]android之Service(1)startService
[转载]android之Service(1)startService
[转载]android之Service(1)startService
[转载]android之Service(1)startService

[转载]android之Service(1)startService

[转载]android之Service(1)startService

Android中 startService()和bindService()的区别

关于Service的知识,详见郭霖大牛的 Android Service完全解析,关于服务你所需知道的一切(上) 1. startService和bindService关系?服务不能自己运行。一旦...
  • a343902152
  • a343902152
  • 2016年03月11日 16:47
  • 968

startService与bindService混合使用对Service生命周期的影响

项目开发中有遇到startService与bindService混合使用的情况,发现其对Service生命周期有很大影响,故与各位分享一下。。。   一、正常情况(应该大家都很熟了,简单介绍): (1...
  • codezjx
  • codezjx
  • 2015年04月27日 20:08
  • 4342

通过一个例子来解释startService和bindService的区别

之前在这篇博客中介绍了service,但是没有具体解释两种service的区别,这次我将通过一个例子来解释。 我首先说明一下这个例子:这是一个身高体重的计算工具,正常情况下设置button响应事件就...
  • lxj1137800599
  • lxj1137800599
  • 2016年01月11日 09:42
  • 1062

【Android一般进阶】startService和bindService混合使用分析

startService、bindService相信很多人都用过,但一般都只是用其中一种,很少有人会混起来使用。 最近在开发项目时,遇到这样的需求:在activity中要得到service对象进而能调...
  • ben0612
  • ben0612
  • 2015年04月22日 10:52
  • 2404

android service startService与bindService的区别

Android执行Service有两种方法,一种是startService,一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别...
  • zhuangyalei
  • zhuangyalei
  • 2015年07月27日 12:30
  • 2780

Android Service 同时使用bindservice和startservice启动的问题

Android Service 同时使用bindservice和startservice启动的问题今天,突然在一个技术群里,有个人说了他在面试中遇到的变态问题,其中就有一个是关于serviceq启动的...
  • wuyouagd
  • wuyouagd
  • 2016年11月28日 15:38
  • 813

bindService 和startService 终止方法

1: bindService 解除绑定方法:(1) unbindService 解除绑定(2)尽管 Activity 被 finish 的时候绑定会自动解除 2:startService 的终止方法...
  • zcl1359205840
  • zcl1359205840
  • 2016年09月29日 11:47
  • 1098

Service之startService,bindService交叉使用时的生命周期

1.仅startService和stopService配合使用,与仅bindService,unbindService配合使用时,service生命周期是比较明确的 2.当startService,s...
  • jjj000123
  • jjj000123
  • 2015年12月02日 21:20
  • 361

Android startservice & bindservice的区别

Android startservice & bindservice的区别作为一个android开发者,service大家应该已经接触过了,接触Android的第一节课,就是将Android的四大组件...
  • u014088294
  • u014088294
  • 2016年01月16日 21:10
  • 872

Service组件(startService,stopService,bindService,unbindService方法比较)-Android

Service是运行在主线程中的.如果需要执行异步操作,可以考虑IntentServcie。Service比Activity具有更高的优先级,只有在系统资源极度匮乏的情况下,android系统才可能清...
  • ShareUs
  • ShareUs
  • 2016年03月17日 17:50
  • 504
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:startService与bindService
举报原因:
原因补充:

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