将Activity或Context传递给其他实例

Geo*_*e J 7 android android-context android-activity

你能否告诉我最好的做法是通过activitycontext其他情况(;)

但...,

  • 通过什么更好?Activity要么Context
  • 有一个Activity全局(公共静态活动活动)是个好主意

是我的代码.你会改变什么?(基于良好的Android实践)

Jim*_*Jim 8

传递Activity到另一个不特别需要Activity对象的对象通常是一个坏主意.Activity扩展Context所以它可以满足一个需要的方法Context.

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

这样做的原因是如果你传入的对象的Activity生命长于Activity,那么对它的引用Activity将阻止Android进行正确的垃圾收集(GC)并消耗不必要的内存.这称为"内存泄漏".

编辑:

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

其次,如果你需要a View,Activity你应该把它传递给WeakReference


Ily*_*okh 0

Context是提供有关应用程序或活动的全局信息的实体。getApplicationContext()您可以通过调用、getContext()getBaseContext()this(在活动类中时) 来获取上下文。Context与其活动/应用程序的生命周期相关,通常用于创建新对象、访问资源等

在您的代码中,您可以用作Context中的第一个参数Toast.makeTextContext类拥有全局对象也很常见。您可以在这里Context阅读一些有关用法的解释

例如,如果您需要启动新活动并创建Intent对象,您可能需要 Activity 对象。