MainActivity.java

package com.example.day23_service_demo3;

import com.example.day23_service_demo3.MyService.MyBinder;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.widget.TextView; public class MainActivity extends Activity { private MyServiceConn conn;
private TextView tv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
conn = new MyServiceConn();
tv = (TextView) findViewById(R.id.tv);
} //绑定服务
public void MyBindServiceClick(View v){ Intent intent = new Intent(MainActivity.this, MyService.class); /**
* 参数1:intent对象 指明绑定的组件
* 参数2:当前服务的链接状态
* 参数3:绑定服务的标记 :绑定且创建
*/
bindService(intent, conn, Context.BIND_AUTO_CREATE); }
//解除绑定服务
public void MyUnBindServiceClick(View v){
unbindService(conn);
} /**
* 创建服务的链接对象 MyServiceConn
* @author sxy
*
*/
class MyServiceConn implements ServiceConnection{ /**
* 表示当前服务连接成功后回调此方法
* 参数1:组件名称
* 参数2:连接后onBind() 返回的对象
*/
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
MyBinder myBinder = (MyBinder) service;
//获取到Service对象
MyService myService = myBinder.getService();
int num = myService.getRandom(); tv.setText(num+"");
} /**
* 失去连接回调此方法
*/
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
conn = null;
} } }

MyService.java

package com.example.day23_service_demo3;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log; public class MyService extends Service{ private static final String TAG ="MyService"; /**
* 必须实现的方法 绑定服务时调用的方法
*/
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub Log.e(TAG , "===onBind===");
return new MyBinder();
} //创建MyBinder类 将MyBinder传递给 绑定源 Service 不能直接去new 通过传递才可以
public class MyBinder extends Binder{
public MyService getService(){
return MyService.this; }
} /**
* 随机数
* @return
*/
public int getRandom(){
return (int) (Math.random()*10+1); } /**
* 表示服务创建时调用
*/
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.e(TAG , "===onCreate===");
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub Log.e(TAG , "===onStartCommand==="); return START_NOT_STICKY;
} /**
* 解除绑定时 调用此方法
*/
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
Log.e(TAG , "===onUnbind===");
return super.onUnbind(intent);
} /**
* Service销毁时调用此方法
*/
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy(); Log.e(TAG , "===onDestroy===");
} }

清单文件

AndroidManifest.xml

package com.example.day23_service_demo3;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log; public class MyService extends Service{ private static final String TAG ="MyService"; /**
* 必须实现的方法 绑定服务时调用的方法
*/
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub Log.e(TAG , "===onBind===");
return new MyBinder();
} //创建MyBinder类 将MyBinder传递给 绑定源 Service 不能直接去new 通过传递才可以
public class MyBinder extends Binder{
public MyService getService(){
return MyService.this; }
} /**
* 随机数
* @return
*/
public int getRandom(){
return (int) (Math.random()*10+1); } /**
* 表示服务创建时调用
*/
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.e(TAG , "===onCreate===");
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub Log.e(TAG , "===onStartCommand==="); return START_NOT_STICKY;
} /**
* 解除绑定时 调用此方法
*/
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
Log.e(TAG , "===onUnbind===");
return super.onUnbind(intent);
} /**
* Service销毁时调用此方法
*/
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy(); Log.e(TAG , "===onDestroy===");
} }

最新文章

  1. Linux less 命令
  2. swoole和erlang通信测试
  3. Pylint
  4. 网络流sap算法模版
  5. Linux系统环境变量及命令
  6. 我今天坑了我们公司的IT程序猿。。。
  7. sqliteExpert软件使用(创建数据库和表)
  8. left join 和 left outer join 的区别
  9. angularJS之使用过滤器转化输出 (angularJS系列最后一篇)
  10. Angular 4 学习笔记 从入门到实战 打造在线竞拍网站 基础知识 快速入门 个人感悟
  11. 201521123106 《Java程序设计》第10周学习总结
  12. python 小练习之生成手机号码
  13. WinForm打包或部署
  14. tomcat 配置本地路径映射
  15. Docker(四)Dockerfile入门
  16. E: Sub-process /usr/bin/dpkg returned an error code
  17. JOBDU 题目1131:合唱队形
  18. nodejs导出excel
  19. Win10安装mysql-8.0.11-winx64详细步骤
  20. 自我总结 (三) --(Java Web学习)

热门文章

  1. VINS 估计器之检查视差
  2. javaIO操作之字节输出流--OutputStream
  3. selenium 设置代理的话,可以使用这种方式,代码是我刚才测试过的,亲测可用
  4. Logistic Regression vs Naive Bayes
  5. vim 批量注释和批量取消注释
  6. [JSOI 2007]麻将
  7. [LNOI 2014]LCA
  8. 绝世好题bzoj4300
  9. 【BZOJ3573】【HNOI2014】米特运输
  10. hdu 4352 数位dp + 状态压缩