Android:同时进行两个活动
Posted
技术标签:
【中文标题】Android:同时进行两个活动【英文标题】:Android: Two Activities Simultaneously 【发布时间】:2013-07-07 21:48:39 【问题描述】:在 *** 上搜索类似问题后,我了解到您不能同时运行 2 个活动。有没有办法解决?
我读过Services
和Asynctasks
,但我还是有点困惑。
我认为Threading/Intents/Handlers
会起作用,但我发现线程是一种从一个活动到另一个活动的方法(如果我错了,请纠正我),而不是同时运行两件事。
假设我想结合一个 android MediaPlayer
活动和一个 video recording
活动,同时仍然能够让两者相互交互,这在 android 中是否可行?是否可以在播放视频/在同一应用程序中运行单独的活动时让相机运行?如果有,怎么做?
我在这里找到了一个解决类似问题的问题 (https://***.com/questions/12021518/android-simultaneous-record-and-playback-different-sources),但没有得到解答。
任何建议或意见将不胜感激!
【问题讨论】:
你可以试试Fragments Intents 用于从一个 Activity 转到另一个 片段可能会有所帮助,如果不需要有两个差异活动,那么您可能可以在同一个活动中使用它们? 感谢 cmets! @Krrishnaaaa 我读了一些关于片段的内容——这似乎意味着我必须为这两个活动拆分屏幕。理想情况下,我希望将 MediaPlayer 覆盖在视频录制预览的顶部,同时同时运行两者,但这似乎影响深远.. 不过肯定会考虑! @AdnanMulla 你知道我是否可以让安卓相机运行和媒体播放器在同一个活动中播放吗?我假设不是因为两者都需要屏幕(视频播放器屏幕和相机预览屏幕),但我想知道...... 【参考方案1】:Intent
,Handler
和 Thread
真的是 3 个不同的东西。
Intent
基本上是一条消息,表示您已经或希望某事发生。根据意图,应用程序或操作系统可能会监听它并做出相应的反应。因此,意图用于从一个活动导航到另一个活动。 (例如:相机意图可用于通过现有相机应用程序捕获图片或视频剪辑的请求,然后将控制权返回给您的应用程序。)
必须创建一个Thread
才能执行长时间运行的作业。如果您没有在自己的线程中显式启动它,那么它将在主 (UI) 线程上运行,这可能会导致用户界面抖动或响应缓慢。
Handler
是非常方便的对象,可以在 2 个线程之间进行通信(例如:后台线程需要更新 UI。您可以使用 Handler
将一些 Runnable
从后台线程发布到 UI 线程)。
正如@krishna 所说,您可以尝试使用片段...
【讨论】:
感谢您的清晰解释!我确实知道在 ui 线程中启动长时间运行的作业会减慢一切,但我想我实际上对活动和线程之间的区别感到困惑。我认为活动本质上就像线程 - 因此我试图将两个活动像线程结合起来并遇到了一些麻烦。我曾认为进行另一个活动=在非 UI 线程上开始长时间运行的工作。无论如何,我会更多地研究碎片。再次感谢!以上是关于Android:同时进行两个活动的主要内容,如果未能解决你的问题,请参考以下文章
同一个活动Android Studio中的两个JSON解析方法