【问题标题】:Start activity from application context in another process在另一个进程中从应用程序上下文启动活动
【发布时间】:2017-07-14 06:12:20
【问题描述】:

为了在活动上下文之外启动活动,我们将使用应用程序上下文。像 applicationContext.startActivity(new Intent(TestActivity.class ....))

如果调用startActivity的服务在另一个进程中,那么applicatioContext是否也属于另一个进程? android会为每个正在运行的进程组件创建applicationContext吗?

如果我们不指定TestActivity正在运行的进程,它是否也可以从另一个进程启动?

【问题讨论】:

    标签: android process


    【解决方案1】:

    应用程序上下文不属于任何进程。但所有进程都属于应用程序。 Android 应用程序上下文是 Singleton,因此,您只有一个用于所有用途。

    如果您从服务或其他任何非 Activity 上下文中启动 Activity,则应使用 Intent.FLAG_ACTIVITY_NEW_TASK 标志。

    用法如下:

    Intent dialogIntent = new Intent(this, MyActivity.class);
    dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(dialogIntent);
    

    【讨论】:

      【解决方案2】:

      如果你想从服务中启动活动,你应该使用 PendingIntent:

      Intent intent = new Intent (YourActivity.class, getContext());
      PendingIntent pi = PendingIntent.getActivity(getContext(), 0, intent, 0);
      pi.send();
      

      其中 getContext() 是服务的上下文

      【讨论】:

      • getContext() 应该是第一个参数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 2011-01-13
      • 2020-03-22
      • 1970-01-01
      相关资源
      最近更新 更多