草庐IT

Android 辅助显示 - 跨 Activity 调用的持久性

coder 2023-12-16 原文

我正在使用 Android MediaRouter (API 16) 和 Presentation (API 17) 类来生成和管理辅助显示。我遵循了 ApiDemos 中的示例以创建独特的非镜像输出,到目前为止它运行良好(使用通过 HDMI 电缆连接到 HDTV 的 Nexus 10 进行测试)。

现在,我希望在 Activity X 中创建的 Presentation 对象继续在辅助显示器上运行,即使 Activity X 调用另一个 Activity Y。在这种情况下,Activity X 仍在堆栈中,但 Activity Y 现在位于堆栈之上。

问题是当 Activity Y 启动时,物理辅助显示器恢复为镜像。当我退出 Activity Y 时,Activity X 的 Presentation 的内容返回(因为我从未对其调用 dismiss())。

所以问题是:即使在本地设备上运行从属 Activity,我怎样才能让 Presentation 附加到在该显示器上运行的辅助显示器?

更新: 我想到的一种方法是从后台线程实例化 Presentation 对象;那么随后创建的另一个 Activity 不应干扰后台线程写入其 Presentation 对象的内容。但我不确定这是否可行,因为通常不允许从后台线程更新 UI。

另一种方法是,如果可能的话,禁用从属 Activity 对辅助显示器的使用,从而防止它在新的 Activity 出现时将辅助显示器恢复为镜像变得活跃。但我也没有找到办法做到这一点。再次感谢您的任何建议。

最佳答案

我实现了@CommonsWare 建议的一种方法(Mark Allison 独立地回答了我在 his blog 上的问题)。感谢您的建议!

回顾一下,问题是我无法在本地设备上通过 Activity 调用在后台运行第二个屏幕演示。这是因为 Presentation 类是作为 Dialog 的子类实现的,因此绑定(bind)到 Activity 实例。因此,当启动新的 Activity 时,第二个屏幕会返回镜像(而不是显示我专门为其生成的其他内容)。

解决方案 是将所有“从属”Activities 重构为原始 Fragments(即启动第二个屏幕的代码)的 Activity。然后,我没有调用 startActivity() ,而是使用 Fragments 启动/停止新的 FragmentTransactions 。最终效果是启动 Presentation 的 Activity 仍在运行,因此当新的 Activity 启动时辅助显示不再中断。

由于顶层 Activity(启动第二个屏幕)实际上是一个使用 SherlockFragmentActivityViewPagerFragmentStatePagerAdapter 这一事实,我的情况变得更加复杂——所以我不得不将所有这些都塞进一个 Fragment 中。它还需要对 ActionBar 选项卡、菜单项和主页图标进行显式管理。

总的来说,我认为代码不太透明......但它有效!

注意:Google 实现了辅助屏幕界面是件好事。但我不确定他们为什么要这样做。与其将 Presentation 类硬塞到 Dialog 中,不如提供一个更通用的解决方案,可以轻松地在后台运行,即不管设备上的前台 Activities 是什么,那就太好了。如上所述,这样的解决方案可以让我免于进行大量代码重构。

关于Android 辅助显示 - 跨 Activity 调用的持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15091067/

有关Android 辅助显示 - 跨 Activity 调用的持久性的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  4. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  5. ruby-on-rails - Rails 模型——非持久类成员或属性? - 2

    对于Rails模型,是否可以/建议让一个类的成员不持久保存到数据库中?我想将用户最后选择的类型存储在session变量中。由于我无法从我的模型中设置session变量,我想将值存储在一个“虚拟”类成员中,该成员只是将值传递回Controller。你能有这样的类(class)成员吗? 最佳答案 将非持久属性添加到Rails模型就像任何其他Ruby类一样:classUser扩展解释:在Ruby中,所有实例变量都是私有(private)的,不需要在赋值前定义。attr_accessor创建一个setter和getter方法:classUs

  6. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  7. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  8. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  9. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  10. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

随机推荐