服务服务是安卓中实现程序后台运行的解决方案,非常适合去执行那些不需要和用户交互的长期运行的任务。
服务的运行不依赖任何界面,即使程序切换到后台,或者是开启了另一个程序。服务人可以保持运作
不过需要注意的是,服务并不是运行在一个独立的进程中,而是依赖在创建服务是所在的应用程序的进程中
在安卓开发的过程中,我们尝试把活动和服务绑定在一起 ,从而达到我们想要实现的效果
让服务更好的提供一些功能上的服务,进行一些操作
我们首先创建一个服务
然后可以看到自动填充的代码
package com.example.testactivity;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class TestService extends Service {
public TestService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
}
我们接下来现在界面上做一些工作
<Button
android:id="@+id/Hold"
android:layout_width="match_parent"
android:layout_height="66dp"
android:text="触发绑定消息"></Button>
我们添加一个按钮
之后给这个按钮绑定事件
Button holdButton=findViewById(R.id.Hold);
holdButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainServersBinder.StartToast();
}
});
里边的** MainServersBinder.StartToast();**我们在是忽略不看
上边的这些都是最最基础的操作
之后开始我们的绑定的操作
我先给出我的service类
package com.example.testactivity;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;
public class TestService extends Service {
public TestService() {
}
public class MyBinder2 extends Binder{
public int TestAdd(int a,int b){
return a+b;
}
}
public MyBinder2 binder2=new MyBinder2();
@Override
public IBinder onBind(Intent intent) {
return binder2;
}
}
我的这里是用Service简单实现一个Add加法的实例
之后我们在主类中调用TestService.MyBinder2
private TestService.MyBinder2 TestBinder;
private ServiceConnection connection=new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//绑定时的事件
//MainServersBinder = (MainServers.MyBinder)service;
TestBinder=(TestService.MyBinder2)service;
}
@Override
public void onServiceDisconnected(ComponentName name) {
//取消绑定时的事件
}
//下面的代码是在onCreate方法中加的 我没有给出里边所有的语句
Button holdButton=findViewById(R.id.Hold);
holdButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// MainServersBinder.StartToast();
int a=TestBinder.TestAdd(110,100);
Toast.makeText(MainActivity.this,"所得结果为:"+a,Toast.LENGTH_SHORT).show();
}
});
Intent intent = new Intent(this, TestService.class);
//绑定服务
bindService(intent,connection,BIND_AUTO_CREATE);
注意一定要添加下面的两句,不然程序会崩溃
以上就是Android中的活动和服务的绑定的方法
希望我所写的对大家有所帮助