【问题标题】:Pass Activity to service将活动传递给服务
【发布时间】:2015-12-03 15:56:40
【问题描述】:

需要将 Activity 传递给 Service。我正在使用

intent.putExtra("messagedialog", this.messageDialog)

通过活动。

但是,当我尝试使用

获取活动时
messageDialog = intent.getParcelableExtra("messagedialog");

它返回null

我有什么遗漏吗?

【问题讨论】:

  • 在什么情况下你需要做这样的事情?
  • 我需要显示最终开发人员可以覆盖的活动。就像他可以覆盖颜色/字体/布局
  • 您的意思是您希望第三方服务在运行时修改您的活动??

标签: java android android-activity android-service


【解决方案1】:

需要将Activity传递给Service

无论您认为要以这种方式解决什么问题,都有更好的解决方案。您可能希望在an Android developer support site 上发布一个问题,详细解释此服务和此活动应该如何交互。

我有什么遗漏

首先,Activity 不是 Parcelable

其次,即使您尝试在Activity 上实现Parcelable,通过Intent extras 传递数据也不是按引用传递,而是按值传递。您的服务将检索活动的无用、分离副本,而不是(可能)正在运行的实际活动。

我需要显示最终开发人员可以覆盖的活动。就像他可以覆盖颜色/字体/布局一样

让客户向您的服务发送PendingIntent,例如通过Intent 额外。然后,您的服务可以在需要时send() PendingIntentPendingIntent 可以指向客户端选择显示的活动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多