【问题标题】:Difference between activities context活动上下文之间的差异
【发布时间】:2019-05-27 00:55:58
【问题描述】:

我是 Android 开发新手,我对 Context 有疑问。我使用什么上下文来开始新活动是否重要?假设我的 android 应用程序中有 3 个活动,例如 aActivity、bActivity 和 cActivity。 a活动是主要的。 bActivity 通过代码从 aActivity 按钮单击开始:

Intent intent = new Intent(this, bActivity.class); 
startActivity (intent);

cActivity 通过代码从 bActivity 按钮单击开始:

Intent intent = new Intent(someContext, cActivity.class); 
startActivity (intent);

如果在 bActivity 中 someContext 将是 aActivity 的上下文而不是 bActivity 的上下文,我的应用程序有什么区别?

【问题讨论】:

    标签: android android-context


    【解决方案1】:

    如果您想深入,每个活动都是Context 的子类。还有将所有方法代理到baseContext 的活动上下文。基本上下文是您应用的应用程序上下文。

    我使用什么上下文来开始新活动重要吗?

    无论您使用哪种上下文来启动新活动。

    【讨论】:

      【解决方案2】:

      不同类型的上下文使用方式不同。有一些与活动的生命周期相关联,也有与应用程序的生命周期相关联。上下文通过调用getApplicationContext()@987654324 来访问应用程序或对象的当前状态@getBaseContext()this 在从应用程序、活动、服务和 IntentServiceClasses 等上下文扩展的类中时。 因此,对于您的情况;您可以使用任何上下文从任何活动启动一个活动,只要上下文引用不超过该组件的生命周期(您正在启动下一个活动的活动).. 你可以阅读更多here

      【讨论】:

      • 这意味着如果我将某些活动的上下文存储在静态变量中,然后使用此上下文启动任何不在同一个任务 (developer.android.com/guide/components/activities/…) 中的新活动,那么我会获得内存泄漏?
      • 是的,您会遇到内存泄漏,并且声明 android 上下文为静态会为您提供以下错误消息:不要将 Android 上下文类放在静态字段中;这是内存泄漏,也会破坏 Instant Run。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      相关资源
      最近更新 更多