android - 将 Activity 或 Context 传递给其他实例

标签 android android-activity android-context

你能告诉我将activitycontext 传递给其他实例的最佳做法是什么吗(;)

但是...,

  • 最好通过什么? ActivityContext
  • Activity 作为全局(公共(public)静态 Activity Activity )是个好主意

here是我的代码。你会改变什么? (基于良好的安卓实践)

最佳答案

Activity 传递到另一个不需要 Activity 对象的对象通常不是一个好主意。 Activity 扩展了 Context,因此它可以满足需要 Context 的方法。

在您的情况下,您可以从传递到方法中的 View 获取 Context。但是,如果您出于其他目的需要 Context,则应避免传递 Activity 并执行类似 Activity.getApplicationContext() 的操作。

这样做的原因是,如果您将 Activity 传入的对象的生命周期比 Activity 长,则对 Activity 的引用将阻止Android 执行适当的垃圾收集 (GC) 并消耗不必要的内存。这称为“内存泄漏”。

编辑:

要处理需要调用 Activity.findViewById() 的情况,请记住这些事项。首先,这是一个 View 方法 ( http://developer.android.com/reference/android/view/View.html#findViewById(int) ),所以一定要从正确的 View 调用它。

其次,如果您需要来自ActivityView,您应该将它作为WeakReference

关于android - 将 Activity 或 Context 传递给其他实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33162348/

相关文章:

Android - 如何从微调器中获取选定的项目值并将其放入字符串中?

android - Camera2 API 支持的 FPS

android - Mono Droid 模态弹出窗口

android - 从广播接收器调用电话时出现上下文错误

android - 如何在 moxy Presenter android 中获取上下文

android - ViewPager - 第一个 fragment 总是在不在 View 中时重新创建( onPause -> onStop -> onAttach->...onResume )

android - 在 Google Cardboard Android SDK 中选择 GLES 版本

android - 无法启动 Activity Java RunTime 异常

java - 使用 Intent.putExtra 发送数组

android - 模仿 Android API 级别 8 之前的 Context.getExternalFilesDir()?