能否请你告诉我什么是最好的做法是通过activity
或context
到其他实例(;)传递活动或上下文其他实例
但是......,
- 更好的是传递?
Activity
或Context
- 是有
Activity
为全球(公共静态活动活动)
here是我的代码好主意。你会改变什么? (基于良好的Android实践)
能否请你告诉我什么是最好的做法是通过activity
或context
到其他实例(;)传递活动或上下文其他实例
但是......,
Activity
或Context
Activity
为全球(公共静态活动活动)here是我的代码好主意。你会改变什么? (基于良好的Android实践)
Context
是提供有关应用程序或活动的全局信息的实体。您可以通过调用getApplicationContext()
,getContext()
,getBaseContext()
或this
(在活动类中时)来获取上下文。 Context
与其活动/应用程序的生命周期相关联,并且通常用于创建新对象,访问资源e.t.c.
在您的代码中,您可以使用Context
作为Toast.makeText
中的第一个参数。为一个班级设立全球性的Context
对象也很常见。你可以阅读一些解释关于Context
使用here
您可能需要活动的对象,例如,如果你需要start new activity创造Intent
对象。
将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)),所以一定要从正确的角度调用它。
第二,如果你需要从Activity
一个View
你应该把它作为一个WeakReference
Ty。所以,让我说我有一个类(例如:'类MyListener实现GridView.MultipleChoiceListener {...}',我不想找到一个控件。我将如何做'findViewById'?例如:http:// pastebin .com/KDDCqfBP –
我编辑了我的回复 – Jim
从您的活动创建助手类的对象,并通过“本”为背景,说
MyHelperclass helper=new MyHelperclass(this);
在Helper类通过其构造函数获取此背景下
Context context;
MyHelperClass(Context context){
this.context=context;
}
现在,你可以通过这方面的makeText ()Toast类的方法。
创建一个新的接口,并在您的活动或服务或Intentservice类实现并返回上下文回调
public interface ContextWraperSolution {
Context getContext();
}
通过这个接口作为一个构造函数参数非活动类,并使用它像
insanaceContextWraper.getContext()
要从另一个实例中使用的情况下,您可以创建静态变量则是指它的情况下要使用
public class MyClassA(){
public static Context context;
private void setcontext()
{
context = MyClassA.this;
}
}
public class MyClassB(){
private Context classA_context = MyClassA.context;
}
你不需要活动或上下文tho,因为你可以在你的吐司消息中调用view.getContext(),你应该没事的 – k0sh