【问题标题】:Running activity from remote service从远程服务运行活动
【发布时间】:2010-04-29 08:54:10
【问题描述】:

我正在尝试从我的远程服务的不同包中运行活动: 这就是我实现 service.java 的方式

  public class CurrencyService extends Service
  {
    public class CurrencyServiceImpl extends ICurrencyService.Stub
    {

    int CALL_PUSH_SERVICE_ACTIVITY=10;


    @Override
    public void callSomeActivity(int activityId) throws RemoteException
    {
            Intent pushActivity=new Intent("com.pushservice.PushActivity");
            pushActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            startActivity(pushActivity);
     }
     .....

}

ive 还在服务的清单中添加了一行:

服务运行良好,但我无法运行活动 -> PushActivity 位于不同应用程序的不同包中, 这是错误:

未找到活动异常:未找到处理 Intent {act=com.pushservice.PushServiceActivity flq=0x10 的活动 ...

谢谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    您不应该从您的服务中调用启动活动。来自Android developers best practice

    而不是生成 Activity UI 直接从后台,你 应该改为使用 NotificationManager 设置 通知。这些将出现在 状态栏,然后用户可以 闲暇时点击它们,查看 您的应用程序必须向他展示什么。

    【讨论】:

      【解决方案2】:

      您正在尝试打开一个Activity,该intent-filteraction"com.pushservice.PushActivity"。你没有一个Activity 有一个intent-filter 和一个action"com.pushservice.PushActivity"

      最好的答案是不显示服务中的活动,因为如果您在用户使用设备时打断他们,他们会非常生气。

      【讨论】:

      • 是的,但是我对这个活动的关注不是启动任何会打断用户的 gui,而只是在后台做其他事情而只是在后台工作(没有屏幕会出现).. 我必须如何调整我的清单才能运行它?
      • 您不能有一个活动“只是为了在后台做其他事情,而只是为了在后台工作(没有会显示的屏幕)”。这就是服务的用途。
      • Okie,所以我把它放在其他地方,你将如何从远程服务调用另一个远程服务来完成另一项工作.. 我想要一个模块化系统,每个远程服务都将是负责系统的某些部分。
      • 是的,我很确定我见过一个没有 gui 的应用程序,它不会在后台作为服务运行,但你可以让它创建一些操作(然后被关闭)而不需要用户的关注点——你见过类似的东西吗?
      • 你绝对不想创建很多远程服务。每个远程服务都会占用一个进程,消耗大量额外的 RAM,而设备开始时并没有太多 RAM。您的设计需要认识到您正在构建的架构的局限性。
      猜你喜欢
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多