一个Service是否可以启动另一个Activity?如果可以,我们如何实现呢?
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
是指您的服务。
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);
startActivity()
。何时调用取决于你。举个快速的例子:实现一个注册广播的服务,然后使用闹钟发送此广播。在广播处理程序中启动所需的活动。这样,您可以启动服务一次,在应用关闭后让其保持活动状态,并在某些触发器下自动打开某些活动,无需进一步用户交互。 - Marcin Gil