android 将服务绑定(bind)到 Activity

标签 android service bind

我在这里看到了几个类似的例子,但似乎无法让我的服务与 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/

相关文章:

android - 在多选模式下在 ListView 中启用/禁用项目选择

java - 一旦我退出应用程序,生成的 QR 图像就会消失

android - "Battery saver"功能终止我的音乐服务

swift - 将一个 swift 变量绑定(bind)到另一个变量

SQLite:将值列表绑定(bind)到 "WHERE col IN ( :PRM )"

android - 删除文本第一个字母之前的多余空格,以便它可以正确地左对齐

java - Android 无法触发 onKey 事件

java - RESTful Web 服务 - 资源上下文和响应问题

android - Android 的 ServiceTestCase<MyService> 可以向我的服务发送消息吗?

c++ - std::bind,无法使具有单个参数的方法起作用