我在这里看到了几个类似的例子,但似乎无法让我的服务与 Activity 绑定(bind)。
我遇到了错误
"android.os.binderproxy cannot be cast to IC_CommissaryService".
我的服务是这样的:
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*/
}
我的 Activity 如下所示:
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)
{
}
};
}
我在 ICservice =(IC_CommissaryService.LocalBinder)service).getService();
行的 Activity 中遇到错误
我想我已经做了与其他帖子中已经建议的人相同的事情,所以请帮忙吗?
谢谢
最佳答案
我遇到了同样的问题。我今天才弄明白。请看注释为<<=====
的部分以下。我希望它有所帮助。
public class PracticeServiceBindingActivity extends ListActivity {
private MyService.MyBinder service; <<====
....
private ServiceConnection connection = new ServiceConnection( ){
public void onServiceConnected (ComponentName name, IBinder service) {
setService(MyService.MyBinder) service; <<====
....
}
}
public void onCreate(....) {
...
public MyService.MyBinder getService(){ <<=====
return service;
}
public void setService(MyService.MyBinder service) { <<=====
this.service = service;
}
}
}
关于android 将服务绑定(bind)到 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873164/