对于在活动上下文之外启动活动,我们将使用应用程序上下文。与applicationContext.startActivity(new Intent(TestActivity.class ....))
一样如果调用startActivity的服务在另一个进程中,那么applicatioContext是否也属于另一个进程? android会为每个流程组件创建applicationContext吗?
如果我们没有指定TestActivity正在运行的进程,它是否也可以从另一个进程启动?
答案 0 :(得分:2)
应用程序上下文不属于任何进程。但所有过程都属于应用程序。 Android应用程序上下文是Singleton,因此,您只有一个用于所有用途。
如果您从服务或其他任何不属于其他活动上下文的活动中启动活动,则应使用Intent.FLAG_ACTIVITY_NEW_TASK
标记。
用法如下:
Intent dialogIntent = new Intent(this, MyActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);
答案 1 :(得分:1)
如果要从服务启动活动,则应使用PendingIntent:
Intent intent = new Intent (YourActivity.class, getContext());
PendingIntent pi = PendingIntent.getActivity(getContext(), 0, intent, 0);
pi.send();
其中getContext()是服务的上下文