Android service(二)绑定服务
2016-06-24 11:09
288 查看
上一节学习的基本服务,只能服务里面做一些操作,它不能与程序进行交互。绑定服务就可以达到与程序的通信。下面通过具体的实例来学习和使用绑定服务。
1.创建服务
2.在AndroidMainfest.xml中注册服务
3.添加绑定和解绑按钮,并添加相应的事件处理
可以看到绑定服务是需要通过一个服务通信的函数来连接程序和服务的。BIND_AUTO_CREATE是指在服务生成的时候自动创建。在连接服务中,持续获取progress的值。同时在服务中,没获取一次值就把progress加1.
点击绑定服务按钮,查看Logcat:
可以看到程序调用了onCreate和onBind。之后就是获取到了progress的值。在开发中,我们可以通过持续监听某个变量来对执行某些操作。
再次点击绑定服务是不会有任何效果的,绑定服务只能绑定一次。点击解绑按钮,可以解绑服务。
项目地址:明天更新
心记不如淡墨。。哈哈
4000
1.创建服务
public class MyService extends Service { private DownloadBinder mBinder = new DownloadBinder(); @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub Log.i("info", "onBind"); return mBinder; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); Log.d("info", "onCreate...."); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub Log.d("info", "onStartCommand...."); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.d("info", "onDestroy...."); } public class DownloadBinder extends Binder { private int progress = 0; public void startDownload() { Log.d("info", "start download...."); } public int getProgress() { progress++; return progress; } } }
2.在AndroidMainfest.xml中注册服务
<service android:name="com.example.bindservice.MyService" > </service>
3.添加绑定和解绑按钮,并添加相应的事件处理
public class MainActivity extends Activity { private MyService.DownloadBinder mDownloadBinder; private ServiceConnection conn = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { // TODO Auto-generated method stub } @Override public void onServiceConnected(ComponentName name, IBinder service) { // TODO Auto-generated method stub mDownloadBinder = (MyService.DownloadBinder) service; mDownloadBinder.startDownload(); int progress = 0; for (int i = 0; i < 10; i++) { progress = mDownloadBinder.getProgress(); Log.i("info", "cur : " + progress); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bind = (Button) findViewById(R.id.bind); bind.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, MyService.class); bindService(intent, conn, BIND_AUTO_CREATE); } }); Button unbind = (Button) findViewById(R.id.unbind); unbind.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub unbindService(conn); } }); } }
可以看到绑定服务是需要通过一个服务通信的函数来连接程序和服务的。BIND_AUTO_CREATE是指在服务生成的时候自动创建。在连接服务中,持续获取progress的值。同时在服务中,没获取一次值就把progress加1.
点击绑定服务按钮,查看Logcat:
可以看到程序调用了onCreate和onBind。之后就是获取到了progress的值。在开发中,我们可以通过持续监听某个变量来对执行某些操作。
再次点击绑定服务是不会有任何效果的,绑定服务只能绑定一次。点击解绑按钮,可以解绑服务。
项目地址:明天更新
心记不如淡墨。。哈哈
4000
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析