活动和上下文的差异以及获取它们的方法

时间:2013-12-04 09:54:48

标签: java android android-activity

你好我很困惑可以解释一下这些获取背景和活动的方法之间的区别:

public static final void onResume(Context context, MBase mem) {
     function.start(id, context);
}
public static final void onResume(Context context, MBase mem) {
     function.start(id, (Activity) context);
}
public static final void onResume(Activity activity, MBase mem) {
     function.start(id, activity);
}

3 个答案:

答案 0 :(得分:1)

据我所知:Context是基础对象。因此,与Activity相同的每个Application都来自Context。这意味着每个Activity和每个Application都是一个Context;

因此,对于广义调用,您可以使用上下文和来自Activity的调用。特别是您可以仅使用Activity。

答案 1 :(得分:1)

活动从Context扩展。

  

java.lang.Object↳android.content.Context        ↳android.content.ContextWrapper            ↳android.view.ContextThemeWrapper                ↳android.app.Activity

(Activity)上下文是类型转换。 Context是基类。它就像汽车(Activity)是一种车辆(Context),但车辆绝对不是汽车。

答案 2 :(得分:0)

Context是一个超级的Activity - 以及其他服务和应用程序。这意味着如果您为其提供非活动上下文,则转换上下文(第二个示例)可能不安全。

你应该真正研究一种面向对象的方法 - 使用静态方法通常不是一个很好的设计。相反,在您的活动中,您可以使用以下方法而不是静态onResume():

public void startFunction(Function function, MBase mem) {
   function.start(id, this);
}