我不是要求差异,而是如何使用这些引用?,类级别对象存储它们的引用或每次使用getter由超类提供,这是一个更好的代码实践:1。调用getActivity(),每次在本地方法中使用getApplicationContext().. iec,或者在活动或片段中需要时将方法作为参数传递。
我想知道什么更有效,为什么?
type1:
Class A extends Activity
{
@Override
public void onCreate()
{
methodA(getApplicationContext());
//or if fragment
methodA(getActivity());
Toast.makeText(getApplicationContext(),...).show();
}
private void methodA(Context mContext)
{
......
......
}
private void methodA()
{
Activity activity = getActivity();
......
......
}
}
type2:
class A extends Activity{
private Activity mContext;
private Activity mActRef; //if fragment
@Override
public void onCreate()
{
mContext = getApplicationContext();
mActRef = getActivity();//if fragment;
methodA(mContext);
//or if fragment
methodA(mActRef);
..........
.........
.........
Toast.makeText(mContext,...).show();
}
private void methodA(Context mContext)
{
......
......
}
private void methodA()
{
Toast.makeText(mContext,....).show();
}
}
}
答案 0 :(得分:-1)
getActivity()和getApplicationContext()都返回上下文,并且在整个类中都可以使用Activity扩展。
根据我的意见,不需要为他们创建一个全局变量,因为它们在类级别可用。两者都是正确的,但存储上下文效率不高。