是否可以从服务启动活动?如果是的话,我们怎样才能做到这一点?
答案 0 :(得分:70)
android.app.Service
是android.app.Context
的后代,因此您可以直接使用startActivity
。但是,由于您在任何活动之外启动此操作,因此需要在意图上设置FLAG_ACTIVITY_NEW_TASK
标记。
例如:
Intent i = new Intent();
i.setClass(this, MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
this
是您的服务。
答案 1 :(得分:20)
即使框架允许您从服务启动活动,它也可能不是一个合适的解决方案。原因是服务任务可能或可能不是服务希望与用户交互时用户的焦点。中断用户当前正在做的事情被认为是糟糕的设计形式,尤其是应该在后台运行的东西。
因此,您应该考虑使用Notification with Notification Service,当用户决定调查时,它带有PendingIntent以启动所需的Activity。把它想象为延迟满足。
答案 2 :(得分:7)
我从服务启动活动时遇到问题,原因是缺少FLAG_ACTIVITY_NEW_TASK意图标记。
答案 3 :(得分:7)
这肯定会解决您的问题
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName cn = new ComponentName(this, TaxiPlexer.class);
intent.setComponent(cn);
startActivity(intent);