Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将MemoryFile绑定到服务失败_Android_Ipc - Fatal编程技术网

Android 将MemoryFile绑定到服务失败

Android 将MemoryFile绑定到服务失败,android,ipc,Android,Ipc,我正在尝试将服务绑定到活动,该活动在绑定时返回在服务中创建的内存文件对象 问题是,在活动中的onServiceConnected()回调期间,我可以从服务类接收任何类型的对象,除了在服务类中创建的MEMORYFILEtype对象之外 当存在MemoryFile对象时,服务无法绑定到活动 服务级别如下所示 public class RemoteService extends Service { IBinder mBinder = new LocalBinder(); MemoryFile mFi

我正在尝试将
服务
绑定到
活动
,该活动在绑定时返回在
服务
中创建的内存文件对象

问题是,在活动中的
onServiceConnected()
回调期间,我可以从服务类接收任何类型的对象,除了在服务类中创建的
MEMORYFILE
type对象之外

当存在MemoryFile对象时,服务无法绑定到活动

服务级别如下所示

public class RemoteService extends Service {

IBinder mBinder = new LocalBinder();
MemoryFile mFile; 
@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    try {
        if(mFile == null)
        mFile = new MemoryFile("mem", 1024);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return mBinder;
}
public class LocalBinder extends Binder {
    public MemoryFile getMemoryFile() {
           return mFile;
          }
    }
  }
在活动内部,
Onserviceconnected()
发生回调

public void on服务已连接(组件名称,IBinder服务){
Toast.makeText(MainActivity.this,“服务已连接”,1000).show();
mBounded=真;
LocalBinder mLocalBinder=(LocalBinder)服务;
memoryFile=mLocalBinder.getMemoryFile();

}

服务#onBind()
返回IBinder,而不是memoryfile是的,在我的例子中,它是mBinder;这是一个LocalBinder类<代码>公共类LocalBinder扩展绑定器{public MemoryFile getMemoryFile(){return mFile;}}}这里是一个完整的服务类
公共类RemoteService扩展服务{IBinder mBinder=new LocalBinder();MemoryFile mFile;@Override public IBinder onBind(Intent-Intent){//TODO自动生成的方法存根try{if(mFile==null)mFile=newmemoryfile(“mem”,1024);}catch(IOException e){//TODO自动生成的catch块e.printStackTrace();}return mBinder;}公共类LocalBinder扩展绑定器{public MemoryFile getMemoryFile(){return mFile;}}
和活动内部,当服务连接时。
public void on服务连接(组件名称,IBinder服务){Toast.makeText(MainActivity.this,“服务已连接”,1000)。show();mBounded=true;LocalBinder mLocalBinder=(LocalBinder)服务;memoryFile=mLocalBinder.getMemoryFile();}
不要添加长代码作为注释,因为很难阅读,请编辑您的问题