- bindservice调用服务流程:
- 在服务内部有一个方法需要我们调用 比如办证方法
public void certificate(int money) { if (money > 500) { Toast.makeText(this, "马上给你办证", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "没钱办什么证", Toast.LENGTH_SHORT).show(); } }
-
- 在服务内部 声明一个中间人对象(IBinder实现类)
class myBinder extends Binder implements IService { @Override public void callCertificate(int money) { certificate(money); } }
-
- 在服务的onBind方法里面把我们定义的中间人对象返回
@Nullable @Override public IBinder onBind(Intent intent) { return new myBinder(); }
-
- 在mainActivity里面调用bindService 目的是为了获取我们定义的中间人对象
public class MainActivity extends AppCompatActivity { private IService iservce; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(this, MyService.class); MyServiceConnection myconn = new MyServiceConnection(); bindService(intent,myconn,BIND_AUTO_CREATE); } public void click(View view) { iservce.callCertificate(666); } class MyServiceConnection implements ServiceConnection{ @Override public void onServiceConnected(ComponentName name, IBinder service) { iservce = (IService) service; } @Override public void onServiceDisconnected(ComponentName name) { } }}