我现在正试图复活一个项目.getMainLooper()上有一个例外...
我认为MainLooper初始化可能存在问题,并在此之前添加了Looper.prepareMainLoop().
异常告诉我,已经有一个针对该对象的looper被抛出......
然后我尝试用Looper.myLooper()替换getMainLooper()并且它有效...
但我不明白为什么=)
事实上,我没有区分这两件事.我认为在我的项目中使用getMainLooper()的地方,它是应用程序的真正主要循环器的最佳位置,但我得到了我得到的...
请解释.
感谢您的关注
ina*_*ruk 10
区别在于Looper.prepareMainLooper()在主UI线程中准备looper.Android应用程序通常不会调用此函数.由于主要线程在第一次活动之前很久就准备好了looper,因此启动了服务,提供者或广播接收者.
但Looper.prepare()准备Looper当前的线程.调用此函数后,线程可以调用Looper.loop()以使用Handlers 开始处理消息.
所以,在你的情况下,你有两个线程--X和Y.X线程是主要的UI线程,它的looper已经由Android准备好了.当你在Y线程中并且你正在调用Looper.prepareMainLooper()你正试图在X线程(主线程)中准备looper.这失败了,因为X的looper已经准备好了.但是当你Looper.prepare()在Y线程中调用时,你实际上是在Y线程中准备looper并因此准备调用Looper.loop().
| 归档时间: |
|
| 查看次数: |
5593 次 |
| 最近记录: |