【问题标题】:Working in background在后台工作
【发布时间】:2011-08-22 21:30:12
【问题描述】:

实际上,我为我的问题找到了很多答案,但这次我完全陷入困境。

我的问题很简单。我正在为 .pls 流构建一个无线电流应用程序,当用户按下主页按钮时,我希望我的应用程序继续工作。我想你们很多人都知道 ebuddy 和 Skype 或基本的媒体播放器。他们将自己置于通知栏,您可以从这个地方轻松联系到他们。我尝试为我的应用程序创建通知,但是当我单击通知栏上的图标时,我无法访问我的应用程序。它直接打开了我的应用程序的新版本,我无法控制流媒体,最初的工作应用程序不再存在。

【问题讨论】:

    标签: android service background skype foreground


    【解决方案1】:

    您可能需要阅读 LaunchMode 的说明:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

    您希望将 Activity 作为 singleInstance 启动

    编辑:也许 singleTask 会更好。

    这是您要实现的工作流程:

    所有后台工作都必须由服务完成。实现一个非常简单,几乎就像创建一个活动一样。

    有很多例子说明如何做到这一点:

    【讨论】:

    • 是的,一开始这看起来像是解决方案,但是当我添加它时,我的应用程序应该关闭(从不启动)以获取应用程序的 URL。这是唯一的方法。如果我先打开它然后我尝试打开一个 .pls 文件,应用程序不会执行任何操作。因此,我认为我必须了解这些服务,否则我必须禁用 HOME 按钮并强制用户使用 EXIT,但我不希望这样。
    • @Ada 这不是为了避免服务。我假设您的音乐已经通过服务流式传输,并且您想显示应用程序来控制流式传输。所有后台工作都必须由服务完成。实现一个非常简单,几乎就像创建一个活动一样。这里有一个如何做到这一点的例子:developer.android.com/reference/android/app/Service.html。这里的另一个例子:marakana.com/forums/android/examples/60.html
    • 实际上,我将我的媒体流播放器称为线程,但我理解这是完全错误的方式。如果我理解正确的情况,我必须修改我的流媒体播放器类作为服务。我说的对吗?
    • @Ada 是的。您为 UI 和服务保留一个活动来替换第二个线程。查看 IBinder 类的文档,这是一种在服务和活动之间进行通信的简单方法。花点时间,浏览我发布的链接。然后,如果需要,您可以在此处提出新问题以及实施细节。如果您已经将流类实现为线程,那么创建服务不会有太大困难。祝你好运!
    【解决方案2】:

    您需要实际的音乐播放部分(或应在后台继续运行的部分)作为服务,而 gui 则作为活动。您发出的通知应该使用 flag_activity_reorder_to_front 将您的活动 gui 放在最前面。

    【讨论】:

    • 我认为这是我的问题的正确答案,但我不知道如何使用服务,实际上我尝试了一些关于它们的东西,但我的应用程序没有取得任何进展。我将尝试了解服务和应用程序之间的联系。
    猜你喜欢
    • 2014-01-29
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2019-04-09
    相关资源
    最近更新 更多