【问题标题】:Why is Context needed to start activitites in Android为什么在 Android 中启动 Activity 需要 Context
【发布时间】:2018-08-16 19:26:34
【问题描述】:

我了解什么是上下文,以及为什么需要它,但是为什么需要它来启动活动,为什么不能仅通过静态加载它们或调用其构造函数来完成。

【问题讨论】:

  • 查看Activity.getCallingActivity()的文档...
  • 返回调用此活动的活动名称。这是 * {@link #setResult setResult()} 中的数据将发送给谁。您 * 可以使用此信息来验证是否允许接收者 * 接收数据。 这并不能解释为什么我不能创建和启动这样的活动,例如:ActivityToLaunch.create()ActivityToLaunch activity = new ActivityToLaunch()

标签: android android-activity android-context


【解决方案1】:

为什么我不能创建和启动这样的活动: ActivityToLaunch activity = new ActivityToLaunch()

简答:因为您没有Activity

也就是说,Activity 是由 Android 框架管理的特殊组件,但它允许您将应用程序逻辑添加到预定义的方法中,例如 onCreate()onResume() 等,稍后由系统。

...

假设您想从您的应用程序中使用第三方应用程序,例如允许用户从 SD 卡中选择文件的默认文件管理器。显然你不能做这样的事情:

  FileManager manager = new FileManager()

因为在您的应用程序代码中无法访问 FileManager 类(或任何其他第三方应用程序的类),所以...希望您已经可以看到这种方法的局限性。 这就是为什么 Android 允许我们创建一个 Intent,其中给出了有关 Activity 的元数据,将其传递给 startActivity(...),然后系统负责创建已启动的活动。

这只是一个例子,可以肯定 Android 设计成这样还有其他原因。

【讨论】:

  • 简短的回答很清楚。谢谢你的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
  • 2015-03-12
相关资源
最近更新 更多