本文介绍了广播接收器方面与对话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想实现以下
- 一个活动启动一个后台任务(SyncAdapter),并显示一个对话框。
- 后台任务发送广播。
- 这些广播应该由对话框中截获。
什么我希望是这样的:
对话广播
< -------------------
好!
< -------------------
好! .... < -------------------
好!
不过,我所得到的是这样的:
对话广播
< -------------------
< ------------------- .... < ------------------- (对话解雇) 好!
好! ....
好!
如上图所示,广播被正确发送,但在对话框关闭后才可被接收。我希望收到他们正在所示的对话框时。换句话说,步骤1和2都工作正常,但三是工作部分。我想可能是问题是,我没有使用的广播接收器的适当的上下文。
所以我的问题是:我应该使用哪种情况下认购的更新(即接收广播,不给他们),使他们能够通过对话被拾起正在显示时,
我试着 Activity.this
, Activity.this.getBaseContext()
和 Activity.this.getApplicationContext()
, dialog.getContext()
, DialogFragment.getActivity()
无济于事。
只是为了澄清:我用的BroadcastReceiver模式多次,用它对话时,旁边我只是遇到了麻烦。
。解决方案
事实:
- 活动(A)显示对话框(D)
- 未知类型(财产以后)命名的后台任务(T)
- (T)将广播到广播接收器(R)
- (R)应该解雇(D)
问题:
- (T)你的意思是类从AbstractThreadedSyncAdapter出来的?
- 请您somhow的(T)启动和显示(D)后完成(A)?
结论:
- 不管,如果你的(A)你做什么创建和显示(D)是负责解雇(D)及做befor中的onStop得到()状态
- 换句话说,如果活动将不被解雇对话框死了,你会得到
- & when you try manipulate the dialog you will get:
The second part of your question, which concerns context
- you always can check which context is assigned to Dialog by method
- usen it to match other context
- also u can use Class method
- if u wanna match context to class (for example Activity u use)
and I would forget to add:
you can always START DIALOG USING APLICCATION CONTEXT :)
& one more thing:
any stuff involving UI shoul by done on UI THREAD in case you will forgot & get
edit:
I DONT SEE ANY PROBLEM : WORKING SOLUTION
这篇关于广播接收器方面与对话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!