2011-10-23 213 views
0

我想触发显示的东西在活动发生后,一个对话框,X秒(恢复,按钮点击等)延迟执行

  • 我有哪些选择? (例如Thread,AsyncTask,Handler
  • 这些选项是否有特别的注意事项?例如我是否需要检查活动是否仍然有效?

回答

3

使用handler.postDelayed(runnable, delayedms);

这是方法之一,您还可以使用AlaramManager。

对于AlaramManager,您的活动无需激活。和它应该是的处理程序。

+0

随着处理程序,我如何验证活动是积极的?通过AlarmManager,我如何连接到正确的上下文(当前活动的活动)来显示对话框? – orip

+0

您可以在您的activity onPause()方法中使用handler.removeCallbacks(runnable),该方法将在您的活动失去焦点时移除计划的操作。就报警管理员而言,我认为它用于通知某种事情,或者做一些背景处理,而不是为了显示对话框的目的。 –

+0

+1,谢谢!如果没有onPause被调用,我的活动会被杀死,但是处理器仍然处于活动状态? – orip

0

我考虑过的一个选项:我可以创建一个透明视图(使用<activity android:theme="@android:style/Theme.Translucent.NoTitleBar",如here所示),并创建一个对话框,而不是将对话框附加到现有视图。

这很好,因为我可以用延迟的意图创建此活动。

当对话框关闭时,我需要确保调用finish()

我不确定如果只有原始活动仍处于活动状态才会发生这种情况。

+0

为什么不使用@android:style/Theme.Dialog? –