不使用ipc 实现 Activity与Service双向通信

原创 2017年06月21日 17:20:31
//直接上代码  Service :

public class UploadPictureService extends Service{

    public static final String PATH_KEY = "sdcard_path_list";

    private ArrayList<String> picturePaths;

    private ServiceBinder mBinder;

    private String TAG = UploadPictureService.class.getName();

    public interface IUploadFinishListener {
        void onUploadFinished(ArrayList<String> jdImgUrls);
    }

    public class ServiceBinder extends Binder {
        IUploadFinishListener callBack;
        public void keepCallback(IUploadFinishListener cb){
           callBack = cb;
        }

        public void businessFinished(){
            stopSelf();
        }
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        picturePaths = intent.getStringArrayListExtra(PATH_KEY);
        mBinder = new ServiceBinder();
        return mBinder;
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        picturePaths = intent.getStringArrayListExtra(PATH_KEY);
        uploadPicture();
        return super.onStartCommand(intent, flags, startId);
    }

    private void uploadPicture(){
        // 在这里做实质性的事情
        
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }
}

//Activity
...
    /**
     * 
     */
    private void uploadPictureByService(ArrayList<String> pathStrings){
        Intent intent = new Intent(this, UploadPictureService.class);
       
        bindService(intent, new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
                UploadPictureService.ServiceBinder binder = (UploadPictureService.ServiceBinder) service;
                binder.keepCallback(new ServiceFinishCallback(binder));
            }

            @Override
            public void onServiceDisconnected(ComponentName name) {
            }
        },0);

        intent.putExtra(UploadPictureService.PATH_KEY,pathStrings);
        startService(intent);
    }

    static class ServiceFinishCallback implements UploadPictureService.IUploadFinishListener {

        UploadPictureService.ServiceBinder binder;

        ServiceFinishCallback(UploadPictureService.ServiceBinder binder) {
            this.binder = binder;
        }

        @Override
        public void onUploadFinished(ArrayList<String> jdImgUrls) {
            //

            //if dispose finished
            binder.businessFinished();
        }
    }
...






Android Service和Activity基于串口蓝牙模块的双向通信【第二篇】

http://blog.csdn.net/cen616899547/article/details/6728040 一直以来都想利用手机来控制一些东西,比如电灯,电风扇等家电或者...
  • daditao
  • daditao
  • 2015年02月11日 22:23
  • 2045

Android Service与Activity双向通信的两种方式

本博客只讲述同一个进程中activity和Service的通信,进程间通信可以使用AIDL,后续博客更新.关于Service的认识service是一种组件,不是单独的线程或者进程,它属于UI线程,只不...
  • ethanhola
  • ethanhola
  • 2017年03月10日 00:37
  • 1530

Messenger实现Activity与Service的双向通信

Activity与Service间的单向通信,相信大家都知道,常用的有下面3种方式: 1. 通过bindService(service, conn, BIND_AUTO_CREATE)开启Servi...
  • mChenys
  • mChenys
  • 2016年03月09日 18:24
  • 355

使用Handler实现Service和Activity之间的双向通信

Service和Activity之间通信一般来说用的比较多的就是广播和Handler,今天来说一下怎么用Handler来实现两者之间的通信。首先先来写Service这边: 在onBind方法中: ...
  • CodeNoodles
  • CodeNoodles
  • 2016年06月15日 10:50
  • 1437

使用Handler实现Service和Activity之间的双向通信

使用Handler实现Service和Activity之间的双向通信 分类:学习笔记 Service和Activity之间通信一般来说用的比较多的就是广播和Ha...
  • Super_Jadroid
  • Super_Jadroid
  • 2017年01月11日 16:42
  • 123

Android学习之Activity与Service进行通信的三种方式

Activity与Service进行通信的三种方式 第一种 简单通信 直接通过Intent进行传值,我们在启动一个Service的时候通过Intent的对象向Service进行传值,这种方式传...
  • qq_28468727
  • qq_28468727
  • 2016年08月07日 19:02
  • 14042

使用 Messenger 来实现Service的双向通信

使用 Messenger 来实现Service的双向通信
  • antimage08
  • antimage08
  • 2015年11月26日 15:05
  • 168

使用Messenger进行Activity与Service之间的双向通信

在Android开发中,有时候我们需要让一个Activity绑定一个Service,进行两者之间的通信。当Activity绑定成功以后,就可以调用Service中的public(或有对应可见级别)的方...
  • huihuangui
  • huihuangui
  • 2017年12月22日 14:28
  • 44

Android中的Service与进程间通信(IPC)详解

Service 什么是Service 在后台长期运行的没有界面的组件。其他组件可以启动Service让他在后台运行,或者绑定Service与它进行交互,甚至实现进程间通信(IPC)。例如,可以让服...
  • linchaolong
  • linchaolong
  • 2016年04月27日 20:38
  • 6190

Android中通过Messenger与Service实现进程间双向通信

转载博客原文:http://blog.csdn.net/iispring/article/details/48329925 Android中的Service和其调用者既可以在同一个App中,也可...
  • zhou114108
  • zhou114108
  • 2016年07月27日 22:54
  • 656
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不使用ipc 实现 Activity与Service双向通信
举报原因:
原因补充:

(最多只允许输入30个字)