如何从服务启动一个活动?
是否可以从服务启动一个活动? 如果是的话,我们该怎么做到呢?
android.app.Service
是android.app.Service
的后代,所以你可以直接使用startActivity
。 但是,由于您在任何活动之外开始此操作,您需要在意图上设置FLAG_ACTIVITY_NEW_TASK
标志。
例如:
Intent i = new Intent(); i.setClass(this, MyActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i);
this
是你的服务。
即使框架允许你从一个服务启动一个Activity,也可能不是一个合适的解决scheme。 原因在于服务任务可能是也可能不是用户在服务希望与用户交互时的焦点。 中断用户目前正在做的事情被认为是糟糕的deviseforms,特别是在应该在后台运行的东西。
因此,您应该考虑使用带通知服务的通知,通知服务携带PendingIntent,以便在用户决定是否需要调查时启动所需的活动。 把它想成延迟满足。
从服务启动活动时遇到问题,这是由于缺lessFLAG_ACTIVITY_NEW_TASK意向标志。
这肯定会解决你的问题
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);