activity绑定服务
来源:互联网 发布:ubuntu veloview 编辑:程序博客网 时间:2024/05/22 11:02
我直接贴出代码 读者慢慢体会吧
接口
[java] view plain copy
- public interface ServiceInterface {
- public void show();
- }
Service类
[java] view plain copy
- import android.app.Service;
- import android.content.Intent;
- import android.os.Binder;
- import android.os.IBinder;
- import android.util.Log;
- import android.widget.Toast;
- public class Service_01 extends Service {
- private final String TAG = "Service--->";
- private final IBinder binder = new MyBinder();
- MyBinder mybinder = new MyBinder();
- public class MyBinder extends Binder implements ServiceInterface {
- /*show只是测试方法,可以不要*/
- public void show() {
- Toast.makeText(Service_01.this, "MyName is Service_01",
- Toast.LENGTH_LONG).show();
- }
- /*返回service服务,方便activity中得到*/
- Service_01 getService() {
- return Service_01.this;
- }
- }
- /////////////////以上是为了测试绑定功能而做的准备
- /* 绑定时执行*/
- @Override
- public IBinder onBind(Intent intent) {
- Log.d(TAG, "onBind");
- return binder;
- }
- /*只在创建时执行一次*/
- @Override
- public void onCreate() {
- super.onCreate();
- Log.d(TAG, "onCreate");
- }
- /*断开绑定或者stopService时执行*/
- @Override
- public void onDestroy() {
- super.onDestroy();
- Log.d(TAG, "onDestroy");
- }
- /* 当内存不够时执行改方法 */
- @Override
- public void onLowMemory() {
- super.onLowMemory();
- onDestroy();// 注销该service
- }
- /* 当从新尝试绑定时执行 */
- @Override
- public void onRebind(Intent intent) {
- super.onRebind(intent);
- Log.d(TAG, "onRebind");
- }
- @Override
- public void onStart(Intent intent, int startId) {
- super.onStart(intent, startId);
- Log.d(TAG, "onStart");
- }
- /* ,每次startService都会执行该方法,而改方法执行后会自动执行onStart()方法 */
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- Log.d(TAG, "onStartCommand-->flags=" + flags + " startId=" + startId);
- return super.onStartCommand(intent, flags, startId);
- }
- /*断开绑定时执行*/
- @Override
- public boolean onUnbind(Intent intent) {
- Log.d(TAG, "onUnbind");
- return super.onUnbind(intent);
- }
- }
Activity测试类
[java] view plain copy
- import android.app.Activity;
- import android.content.ComponentName;
- import android.content.Context;
- import android.content.Intent;
- import android.content.ServiceConnection;
- import android.os.Bundle;
- import android.os.IBinder;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class TestService extends Activity {
- /** Called when the activity is first created. */
- /*注册按钮*/
- private Button start = null;
- private Button stop = null;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- start = (Button)findViewById(R.id.button_01);
- start.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- /*绑定service*/
- Intent bindIntent = new Intent(TestService.this, Service_01.class);
- bindService(bindIntent, sconnection, Context.BIND_AUTO_CREATE);
- }
- });
- stop = (Button)findViewById(R.id.button_02);
- stop.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- /*断开绑定service*/
- unbindService(sconnection);
- }
- });
- }
- private Service_01 serviceBinder;
- /* 注册接口方法*/
- ServiceInterface mService = null;
- /* 绑定service监听*/
- ServiceConnection sconnection = new ServiceConnection() {
- /*当绑定时执行*/
- public void onServiceConnected(ComponentName name, IBinder service) {
- Log.d("activity--->", "已绑定到service");
- mService = (ServiceInterface) service;
- if (mService != null) {
- mService.show();//测试方法
- }
- Intent intent = new Intent();//这里只是为了下面传intent对象而构建的,没有实际意义
- /*绑定后就可以使用Service的相关方法和属性来开始你对Service的操作*/
- serviceBinder = ((Service_01.MyBinder) service).getService();
- /*比如:你可以掉用Service的onStartCommand()方法*/
- serviceBinder.onStartCommand(intent, 0, 0);//0,0是我随意的参数
- }
- /*当断开绑定时执行,但调用unbindService()时不会触发改方法*/
- public void onServiceDisconnected(ComponentName name) {
- Log.d("activity--->", "已断开绑定service");
- }
- };
- }
0 0
- activity绑定服务
- 【Android】Activity与服务Service绑定
- Tab的子activity绑定服务报空指针错误
- Activity/Fragment/TabActivity/ActivityGroup bindSrvice绑定服务无效
- 如何在非Activity中启动、绑定Service(服务)
- 绑定的服务既然生命周期跟与其绑定的activity一样,那为什么需要绑定的服务呢?
- activity以绑定服务的方式开启服务并调用服务里面的方法
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务&绑定远程服务
- 使用绑定服务并且与Activity通信进行UI更新的两种方法
- 绑定未绑定的服务
- 绑定Activity和Service
- Activity和Service绑定
- j2ee j2se
- JS的认知与基本知识点
- Spring的事务管理--事务隔离级别
- 解决保存Cookie中带有中文会报错问题
- Tensorflow
- activity绑定服务
- (7)IDEA 14.1 安装MyBatis插件
- Xcode Cannot create __weak reference in file using manual reference counting
- C#中Timer的使用
- 【BZOJ2301】【HAOI2011】Problem b 莫比乌斯反演
- OFBiz 数据库自增SequenceUtil.java
- hdu 2612
- Android.mk的用法和基础 && m、mm、mmm编译命令
- 关于Xml文件读取报错的问题