Android开发--Service开启,关闭,绑定,解除

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

               

     Android应用程序中有一项非常重要的技术--Service,它没有运行界面,运行在后台,但是有一点非常重要,Service并不是一个单独的进程,同时也不是一个线程,用来处理耗时的动作。

    Service有两种使用方法,一种是start和stop,另一种是绑定服务。

    当使用的是第一种方法时,直到用户停止这个服务,Service才会停止,即使是用户关闭这个Activity(应用程序),Service也一样会在后台运行。

    当用户使用的是第二种方法时,一旦用户解除绑定或者停止了这个Activity(应用程序),Service也自动停止了,即它是随着Activity的生命周期运行的。

下面的截图是对Service的测试画面:

一下是程序的源代码:

public class A_Service01 extends Activity private Button button1; private Button button2; private Button button3; private Button button4; private MyService myService;  private ServiceConnection serviceConnection=new ServiceConnection() {    @Override  public void onServiceDisconnected(ComponentName name) {   // TODO Auto-generated method stub   myService=null;   Toast.makeText(A_Service01.this, "Service Failed", Toast.LENGTH_SHORT).show();  }    @Override  public void onServiceConnected(ComponentName name, IBinder service) {   // TODO Auto-generated method stub   //myService=((MyService.MyBinder)service).getService();   Toast.makeText(A_Service01.this, "Service Connected", Toast.LENGTH_SHORT).show();  } }; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_a__service01);  button1=(Button)findViewById(R.id.button1);  button2=(Button)findViewById(R.id.button2);  button3=(Button)findViewById(R.id.button3);  button4=(Button)findViewById(R.id.button4);  button1.setOnClickListener(new OnClickListener() {      @Override   public void onClick(View v) {    // TODO Auto-generated method stub   final Intent intent=new Intent(A_Service01.this,MyService.class);   startService(intent);   }  });        button2.setOnClickListener(new OnClickListener() {      @Override   public void onClick(View v) {    // TODO Auto-generated method stub   final Intent intent=new Intent(A_Service01.this,MyService.class);   stopService(intent);   }  });        button3.setOnClickListener(new OnClickListener() {      @Override   public void onClick(View v) {    // TODO Auto-generated method stub    final Intent intent=new Intent(A_Service01.this, MyService.class);    bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);   }  });        button4.setOnClickListener(new OnClickListener() {      @Override   public void onClick(View v) {    // TODO Auto-generated method stub   unbindService(serviceConnection);    }  }); } @Override public boolean onCreateOptionsMenu(Menu menu) {  // Inflate the menu; this adds items to the action bar if it is present.  getMenuInflater().inflate(R.menu.activity_a__service01, menu);  return true; }}

public class MyService extends Service {  /*  * 出现这句话的原因是下面重载的onBind方法需要一个返回值  */ private MyBinder myBinder=new MyBinder(); @Override public IBinder onBind(Intent arg0) {  // TODO Auto-generated method stub  Log.d("MyService", "Myservice onBind");  return myBinder; } @Override public void onRebind(Intent intent) {  // TODO Auto-generated method stub  super.onRebind(intent);  Log.d("MyService", "Myservice onRebind"); } @Override public boolean onUnbind(Intent intent) {  // TODO Auto-generated method stub  Log.d("MyService", "Myservice onUnbind");  return super.onUnbind(intent); } @Override public void onCreate() {  // TODO Auto-generated method stub  super.onCreate();  Log.d("MyService", "Myservice onCreate"); } @Override public int onStartCommand(Intent intent, int flags, int startId) {  // TODO Auto-generated method stub  Log.d("MyService", "flags---->"+flags);  Log.d("MyService", "startId---->"+startId);  Log.d("MyService", "Myservice onStartCommand");  return super.onStartCommand(intent, flags, startId); }  @Override public void onDestroy() {  // TODO Auto-generated method stub  super.onDestroy();  Log.d("MyService", "Myservice onDestory"); }  public class MyBinder extends Binder{  MyService getService(){   return MyService.this;  } }}


           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值