AndroidManifest.xml 注册
<service android:name="com.example.myservice.BindService"> <intent-filter > <action android:name="yaosai.gogo"/> </intent-filter> </service>
继承了service的子类
public class BindService extends Service { //计数器及开关 private int count; private boolean quit; private Mybinder mybinder = new Mybinder(); //通过继承binder来实现IBinder的类 作为service的代理人,实现了客户端与service的绑定 public class Mybinder extends Binder{ public int getCount(){ //获取service的运行状态count return count; } } //返回一个IBinder对象 @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub System.out.println("service is binded"); return mybinder; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); System.out.println("创建了oncreate"); new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub while(!quit){ try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } count++; } } }).start(); } //service 被断开连接时回调该方法 关闭连接 @Override public boolean onUnbind(Intent intent) { // TODO Auto-generated method stub System.out.println("service is unbind"); return super.onUnbind(intent); } //销毁 @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); this.quit = true; System.out.println("Service is Destroy"); } }
主方法开启service
public class MainActivity extends Activity { private Button startService; private Button stopService; private Button gerService; //一个service代理对象 BindService.Mybinder binder; //一个监听访问者与service之间的连接情况 private ServiceConnection conn = new ServiceConnection() { //连接失败回调 @Override public void onServiceDisconnected(ComponentName name) { // TODO Auto-generated method stub System.out.println("--onServiceDisconnected--"); } //连接成功 回调 @Override public void onServiceConnected(ComponentName name, IBinder service) { // TODO Auto-generated method stub //返回service中onBind返回的binder对象 binder= (Mybinder) service; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startService = (Button) findViewById(R.id.button1); stopService = (Button) findViewById(R.id.button2); gerService = (Button) findViewById(R.id.button3); final Intent intetn = new Intent(); intetn.setAction("yaosai.gogo"); startService.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //开启service ① 意图 ② ServiceConnection ③是否创建 bindService(intetn, conn, Service.BIND_AUTO_CREATE); } }); stopService.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //关闭 unbindService(conn); } }); gerService.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //根据代理binder获得数据 Toast.makeText(MainActivity.this, "count的值:"+binder.getCount(), Toast.LENGTH_SHORT).show(); } }); } }
实现BiandService
最新推荐文章于 2024-04-30 00:42:27 发布