首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android :绑定时从不调用onServiceConnected()

Android :绑定时从不调用onServiceConnected()
EN

Stack Overflow用户
提问于 2014-04-04 02:30:09
回答 1查看 148关注 0票数 1

有许多相同标题的问题,但它们没有帮助。所以我在问你。

我有一项服务在我的第一次活动中成功地开始了。当切换到第二个活动时,我需要使用服务进行bind。但onServiceConnected从未被调用过。

(注意:我在emulator上工作,并使用这个例子实现绑定)

活性:

代码语言:javascript
复制
public class GameActivity extends NativeActivity implements GroupInfoListener 
{   
    public SimmobBroker broker;// <- this is my service
    ServiceConnection cnn= new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name,
                IBinder service) {
            Log.i(TAG,"onServiceConnected");
            SimmobBrokerBinder binder = (SimmobBrokerBinder) service;
            broker = binder.getService();
            Log.i(TAG,"onServiceConnected...now initializing the activity");
            InitializeActivity();           
        }
        @Override
        public void onServiceDisconnected(ComponentName name) {
        }
    };  

        @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        Intent intent = new Intent(this, SimmobBroker.class);
        getApplicationContext().bindService(intent, cnn, getApplicationContext().BIND_AUTO_CREATE);
//      InitializeActivity();
    }
};

服务:

代码语言:javascript
复制
public class SimmobBroker   extends Service {
    @Override
    public void onCreate() {
        Log.i(TAG, "SimmobBroker Created");
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i(TAG, "SimmobBroker onStartCommand");
        myHandler.post(simmobConnect);
        return START_STICKY;
    }

    @SuppressLint("HandlerLeak")
    public final Handler myHandler = new Handler() {/*...*/}

    private final IBinder myBinder = new SimmobBrokerBinder();

    public class SimmobBrokerBinder extends Binder {
        public SimmobBroker getService() {
            return SimmobBroker.this;
        }
    }
    @Override
    public IBinder onBind(Intent intent) {
        return myBinder;
    } 
};

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-02-01 22:28:12

尝试直接调用bindService,而不是从应用程序上下文调用。

代码语言:javascript
复制
bindService(intent, cnn, Context.BIND_AUTO_CREATE)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22852444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档