非淡泊无以明志,非宁静无以致远。这篇文章主要讲述Android使用bindService作为中间人对象开启服务相关的知识,希望能为你提供帮助。
android使用bindService作为中间人对象开启服务
项目结构如下:
文章图片
MyService:
package com.demo.secondservice;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;
public class MyService extends Service {
public MyService() {
}@Override
public IBinder onBind(Intent intent) {return new MyBind();
}public void banZheng(int money) {if(money>
1000){
Toast.makeText(getApplicationContext(), "
帮你办"
, Toast.LENGTH_LONG).show();
}else {Toast.makeText(getApplicationContext(), "
钱少,不办"
, Toast.LENGTH_LONG).show();
}
}//定义中间人
public classMyBind extends Binder{publicvoidcallBanZheng(int money){//调用办证的方法
banZheng(money);
}}
}
MainActivity:
package com.demo.secondservice;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
MyConn myConn;
MyService.MyBind myBind;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(MainActivity.this, MyService.class);
//startService(intent);
//连接服务
myConn = new MyConn();
bindService(intent,myConn,BIND_AUTO_CREATE);
}public void click(View view) {//自己new对象 脱离了谷歌框架
//MyService myService = new MyService();
myBind.callBanZheng(10200);
}//监视服务的状态
privateclass MyConn implements ServiceConnection{//当服务连接成功调用
@Override
public void onServiceConnected(ComponentName name, IBinder service) {myBind = (MyService.MyBind) service;
}//失去连接
@Override
public void onServiceDisconnected(ComponentName name) {}
}@Override
protected void onDestroy() {//解绑服务
unbindService(myConn);
super.onDestroy();
}
}
【Android使用bindService作为中间人对象开启服务】activity_main.xml:
<
?xml version="
1.0"
encoding="
utf-8"
?>
<
android.support.constraint.ConstraintLayout xmlns:android="
http://schemas.android.com/apk/res/android"
xmlns:app="
http://schemas.android.com/apk/res-auto"
xmlns:tools="
http://schemas.android.com/tools"
android:layout_width="
match_parent"
android:layout_height="
match_parent"
tools:context="
.MainActivity"
>
<
TextView
android:layout_width="
wrap_content"
android:layout_height="
wrap_content"
android:text="
Hello World!"
app:layout_constraintBottom_toBottomOf="
parent"
app:layout_constraintLeft_toLeftOf="
parent"
app:layout_constraintRight_toRightOf="
parent"
app:layout_constraintTop_toTopOf="
parent"
/>
<
Button
android:onClick="
click"
android:layout_width="
wrap_content"
android:layout_height="
wrap_content"
android:text="
开启服务"
/>
<
/android.support.constraint.ConstraintLayout>
推荐阅读
- Android-Kotlin-when&类型推断
- 有了过滤器旁路和一些十六进制,被黑的信用卡号仍然可以访问Google
- 不喜欢TDD(尝试这个行为驱动的开发示例)
- 旧版软件的现代化(使用Erlang和CloudI的MUD编程)
- 修复” Heartbleed” OpenSSL错误(系统管理员指南)
- MetaDapper(使用合适的工具轻松进行数据映射和转换)
- PHP和MySQL中的UTF-8编码指南
- 使用Flux和Backbone的React App数据流(带有示例)
- 使用开源工具进行3D数据可视化(使用VTK的教程)