目录参考代码
1.目录
2.布局文件
3.创建MyService类
4.Activity
效果图
1.运行界面
2.服务创建服务绑定
3.服务解绑和销毁
采用Service的方式,将Activity的计算的业务交给Service去做参考代码
1.目录
2.布局文件
采用线性布局的方式界面中主要包含的内容有EditText两个三个Button按钮
布局界面代码:
预览图:
3.创建MyService类
提供服务的类需要继承Service因为采用的是绑定服务的方式需要重写create,bind,unbind以及destory生命周期方法创建内部对象继承Bind用于再bind生命周期中返回用于提供服务实现交互/** 需要进行静态注册* */ public class MyService extends Service {//创建内部类对象MyBinder myBinder=new MyBinder();@Override public void onCreate() {Toast.makeText(this, "创建服务!", Toast.LENGTH_SHORT).show();}@Nullable@Override public IBinder onBind(Intent intent) {Toast.makeText(this, "绑定服务!", Toast.LENGTH_SHORT).show();//返回的对象是内部类对象return myBinder;}@Override public boolean onUnbind(Intent intent) {Toast.makeText(this, "解绑服务!", Toast.LENGTH_SHORT).show();return true;}@Override public void onDestroy() {Toast.makeText(this, "销毁服务!", Toast.LENGTH_SHORT).show();}//内部类class MyBinder extends Binder {//返回Service对象public MyService getService(){return MyService.this;}//计算//计算public int getSum(int n){int sum=0;for(int i=1;i<=n;i++){sum+=i;}return sum;}}}
4.Activity
控件的定义事件监听器的创建连接对象的创建,创建ServiceConnection对象,重写服务创建的方法,获取binder对象从而获得Service对象调用服务的时候和Activity跳转的时候是类似的调用Service服务的时候需要调用myBind就是调用了Service的内部类public class MainActivity extends Activity {//定义控件Button btn1 = null;//绑定Button btn2 = null;//解绑Button btn3 = null;//求和EditText num;//计算数据EditText result;//结果MyService.MyBinder myBinder = null;MyService myService = null;//创建连接对象private ServiceConnection conn = new ServiceConnection() {@Override public void onServiceConnected(ComponentName name, IBinder service) {myBinder = (MyService.MyBinder) service;myService = myBinder.getService();}@Override public void onServiceDisconnected(ComponentName name) {}};@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取控件initView();//求和getResultNum();}//初始化控件public void initView() {//获取开启服务按钮btn1 = (Button) findViewById(R.id.btn1);//获取停止服务按钮btn2 = (Button) findViewById(R.id.btn2);//求和btn3 = (Button) findViewById(R.id.btn3);//获取要计算的数据num = findViewById(R.id.num);// 获取结果值result = findViewById(R.id.result);//调用点击事件btn1.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) {Intent intent = new Intent(getApplicationContext(), MyService.class);intent.putExtra("num", num.getText().toString());bindService(intent, conn, Service.BIND_AUTO_CREATE);}});//解绑服务btn2.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) {unbindService(conn);}});}private void getResultNum() {btn3.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) {if (num.getText().toString().length() == 0) {result.setText("");Toast.makeText(getApplicationContext(), "要计算的结果不能为空!", Toast.LENGTH_SHORT).show();}else if (num.getText().toString().matches("\\d*")==false){result.setText("");Toast.makeText(getApplicationContext(), "要计算的数据必须为数字!", Toast.LENGTH_SHORT).show();}else {result.setText(myBinder.getSum(Integer.parseInt(num.getText().toString()))+"");}}});}}效果图
1.运行界面
2.服务创建服务绑定
首先先进行服务的创建再进行服务的绑定
3.服务解绑和销毁
解绑服务会调用Unbind生命周期,又因为没有别的可以解绑的服务,所以就会调用Destory生命周期方法
到此这篇关于Android开发服务Service全面讲解的文章就介绍到这了,更多相关Android Service内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:Android Service完整实现流程分析Android Service开发应用实例Android入门之Service的使用详解Android O对后台Service限制详解Android Service启动流程刨析
