android绑定服务到活动
我在这里看到了几个类似的例子,但似乎无法让我的服务与活动绑定 我发现了错误 “android.os.binderproxy无法强制转换为IC_CommissaryService” 我的服务如下所示:android绑定服务到活动,android,service,bind,Android,Service,Bind,我在这里看到了几个类似的例子,但似乎无法让我的服务与活动绑定 我发现了错误 “android.os.binderproxy无法强制转换为IC_CommissaryService” 我的服务如下所示: public class IC_CommissaryService extends Service { @Override public IBinder onBind(Intent intent) { return mBinder; }
public class IC_CommissaryService extends Service
{
@Override
public IBinder onBind(Intent intent)
{
return mBinder;
}
private final IBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder
{
IC_CommissaryService getService()
{
return IC_CommissaryService.this;
}
}
public int onStartCommand(Intent intent, int flags, int startId)
{
}
private boolean SendOrderToServer(int orderID)
{
/* do stuff*/
}
public class SubmitOrders extends Activity
{
IC_CommissaryService ICservice;
@Override
public void onCreate(Bundle savedInstanceState)
{
Intent serviceintent = new Intent(this, IC_CommissaryService.class);
serviceintent.putExtra("binded", true);
bindService(serviceintent, mConnection, Context.BIND_AUTO_CREATE);
}
private ServiceConnection mConnection = new ServiceConnection()
{
@Override
public void onServiceConnected(ComponentName className, IBinder service)
{
Log.e("TEST", "SERVICE CONNECTED");
try
{
ICservice =(IC_CommissaryService.LocalBinder)service).getService();
for(int i = 0; i < Submitorders.size(); i++)
{
ICservice.SendOrderToServer(Submitorders.get(i).intValue());
}
}
catch(Exception ex)
{
Log.e("Error", "Error connecting service: " + ex.getMessage());
}
}
@Override
public void onServiceDisconnected(ComponentName className)
{
}
};
}
}
我的活动如下所示:
public class IC_CommissaryService extends Service
{
@Override
public IBinder onBind(Intent intent)
{
return mBinder;
}
private final IBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder
{
IC_CommissaryService getService()
{
return IC_CommissaryService.this;
}
}
public int onStartCommand(Intent intent, int flags, int startId)
{
}
private boolean SendOrderToServer(int orderID)
{
/* do stuff*/
}
public class SubmitOrders extends Activity
{
IC_CommissaryService ICservice;
@Override
public void onCreate(Bundle savedInstanceState)
{
Intent serviceintent = new Intent(this, IC_CommissaryService.class);
serviceintent.putExtra("binded", true);
bindService(serviceintent, mConnection, Context.BIND_AUTO_CREATE);
}
private ServiceConnection mConnection = new ServiceConnection()
{
@Override
public void onServiceConnected(ComponentName className, IBinder service)
{
Log.e("TEST", "SERVICE CONNECTED");
try
{
ICservice =(IC_CommissaryService.LocalBinder)service).getService();
for(int i = 0; i < Submitorders.size(); i++)
{
ICservice.SendOrderToServer(Submitorders.get(i).intValue());
}
}
catch(Exception ex)
{
Log.e("Error", "Error connecting service: " + ex.getMessage());
}
}
@Override
public void onServiceDisconnected(ComponentName className)
{
}
};
}
公共类提交者扩展活动
{
ICU委员服务ICservice;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
意向服务意向=新意向(此,IC_CommissaryService.class);
serviceintent.putExtra(“绑定”,true);
bindService(serviceintent、mConnection、Context.BIND\u AUTO\u CREATE);
}
专用ServiceConnection mConnection=新ServiceConnection()
{
@凌驾
服务连接上的公共无效(组件名称类名称,IBinder服务)
{
Log.e(“测试”、“服务连接”);
尝试
{
ICservice=(IC_CommissaryService.LocalBinder)service).getService();
对于(int i=0;i
我在ICservice=(IC_CommissaryService.LocalBinder)service.getService()行上的活动中得到错误代码>
我想我已经做了与其他帖子中建议的相同的事情,所以有什么帮助吗
谢谢,我也有同样的问题。我今天才明白。请查看绑定服务中标注有报价的部分:
如果您的服务对您自己的应用程序是私有的,并且运行在
与客户端相同的过程(这是常见的),您应该创建
通过扩展Binder类并返回
它来自onBind()
删除AndroidManifest.ml中的android:process属性,使服务在同一进程中运行。我今天也遇到了同样的问题,它成功了。这些是我用来解决这个问题的抽象类:
只需使用服务和活动扩展这两个类(您可以轻松地将片段从片段更改为活动)。并确保在service/fragment onCreate中设置serviceClass,如下所示:
public void onCreate( Bundle savedInstance ) {
super.onCreate( savedInstance );
this.serviceClass = IC_CommissaryService.class;
}
使用ICservice=(LocalBinder)service.getService()
而不是ICservice=(IC_CommissaryService.LocalBinder)service).getService()代码>看看@imrankhan我不能使用localbinder.getService,因为没有localbinder的实例-这行代码正在尝试创建它instance@Sebs_Jedi-您的链接没有显示如何绑定到服务,只显示如何从“活动”启动服务,这不是我想要的want@user1280736:使用此ICservice=(LocalBinder)getService()代码>它不起作用。setService(MyService.MyBinder)服务如何代码>一个有效的语句?它根本没有任何意义。