【问题标题】:Background running app that shows a dialog when orientation changes当方向改变时显示对话框的后台运行应用程序
【发布时间】:2014-09-25 19:59:36
【问题描述】:

标题很容易解释。我想创建一个始终运行的 android 应用程序,当方向改变时,它会显示一个对话框。我正在寻找一些我认为我必须使用服务的信息,但我不确定如何使用、使用哪一个以及为什么。我什至不确定这是否正确。

所以,总结一下: 始终(即使已关闭)的 android 应用程序会检测到方向更改,然后显示一个对话框。

任何帮助都会很好。我现在真的迷路了。

【问题讨论】:

  • 请问你用这个做什么?我有点困惑,因为我想弄清楚你什么时候想要/需要它
  • 是的。我正在做一个应用程序,每次你改变方向时,都会询问你是否真的想交换它;作为自定义可拖动对话框。

标签: android multithreading dialog orientation-changes background-service


【解决方案1】:

我认为您将必须实现一个服务,并在该服务中注册一个 BroadcastListener,使用操作 ACTION_CONFIGURATION_CHANGED 收听广播。一旦当前配置中的任何内容(例如方向)发生更改,就会调用 Receiver 的 onReceive() 方法。然后,您可以从该服务中打开您需要打开的任何内容并将其置于前台。

我把细节留给你,要解释的太多了。请阅读ServiceBroadcastListener。我自己也没有对此进行过测试,但从概念上讲,我相信这是这样做的。

【讨论】:

  • 首先,非常感谢@yorrd,现在我看到它更干净了。我阅读了您传递给我的所有信息以及更多信息,我有一个关键问题:我应该使用哪种服务?我的意思是,一个普通的service(在主线程上),一个新的'thread, an intentService, a foreground`service或一个boundservice。我首先想到的是foregroundservice,但后来我读到我必须创建一个ongoingnotification,这与我的想法相去甚远。任何帮助都会非常棒,再次感谢。
  • 不客气!意图服务处理您提供给它的意图 - 而不是您想要的。绑定服务被绑定到一个活动——也不是你想要的。这给我们留下了一个普通的旧正常服务和一个前台服务。这里的区别实际上只是前台服务将努力不被杀死(如果您的目标是无论如何都要保持服务运行,那么还有谷歌持久标志并阅读保持服务活着)。
  • 您是使用前台服务(需要通知)还是普通服务取决于您。一个普通的服务确实在主线程上运行,但是,这并不妨碍你在服务中创建一个新线程。所以总而言之,我会使用正常的服务。在我看来,你甚至不需要创建一个新线程,因为你在那里没有做任何工作,只是听然后一个小命令打开一些东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
相关资源
最近更新 更多