首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从onReceive()中调用notify()?

从onReceive()中调用notify()?
EN

Stack Overflow用户
提问于 2012-02-23 17:05:58
回答 1查看 858关注 0票数 0

因此,我正在尝试编写一小段android代码,其中我希望一个线程A等待(),直到网络连接可用。线程A应该做一些与wifi相关的事情,因此BroadcastReceiver被注册到intent WifiManager.NETWORK_STATE_CHANGED_ACTION。我现在做的事情是这样的:

代码语言:javascript
复制
Boolean networkReady = new Boolean(false);
...
Thread A {
  synchronized (networkReady) {
    if (!networkReady) {
      wait();
    }
  }
  doStuff();
}
...

BroadcastReceiver的onReceive()方法:

代码语言:javascript
复制
public void onReceive(Context context, Intent intent) {
  if (EXTRA_NETOWRK_INFO does show that network is ready) {
    synchronized (networkReady) {
      networkReady = true;
      notify();
    }
  }
}

目前我得到的错误是:“在通知前对象没有被线程锁定。”我真的想不出怎么让这玩意儿工作。我猜另一种选择是用小的Thread.sleep(#)绕过networkReady标志,但对我来说这真的不是一个好的做法;)有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-23 17:58:39

实际上,您正在等待线程对象,wait();表示this.wait();但在notify期间,您正在通知接收方对象。所以你得到了错误。尝试在同一对象上等待和通知,比如networkReady本身。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9409897

复制
相关文章

相似问题

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