android handler同步,mHandler不是从一个同步块内的Android中SDK

通过Android SDK框架源代码寻找设置,我已经遇到这样的:mHandler不是从一个同步块内的Android中SDK

private final class GpsLocationProviderThread extends Thread {

public GpsLocationProviderThread() {

super("GpsLocationProvider");

}

public void run() {

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);

initialize();

Looper.prepare();

mHandler = new ProviderHandler();

// signal when we are initialized and ready to go

mInitializedLatch.countDown();

Looper.loop();

}

}

(这是来自的Froyo的框架/碱/位置/的java/COM /机器人/内部/位置/ GpsLocationProvider.java)

GpsLocationProviderThread是一个内部类的GpsLocationProvider,和mHandler是GpsLocationProvider成员实例变量。该变量在此线程的run()方法中设置,但不应用同步,并且mHandler不是volatile。

为什么这样吗?即使99%的时间确实有效,但并不总能保证正常工作,这当然不是好的做法。我的理解是正确的,还是有一些我误解的代码微妙?

2010-12-01

skyler

+0

为什么它不工作?是否有其他线程访问mHandler?我们需要更多的背景。 –

2010-12-01 00:27:16

+0

是的,mHandler是从外部线程(主线程或UI线程)访问的。 –

2010-12-01 00:35:47

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值