将Context转换为View中的Activity是否总是安全的

时间:2012-02-14 07:31:13

标签: android

我可以知道,在Context内总是将Activity投放到View是否安全?

View {
    Activity activity = (Activity)this.getContext();
}

到目前为止,它一直很好用。我想知道,上面的代码会失败吗?

4 个答案:

答案 0 :(得分:55)

据我所知,它并不总是安全的,因为上下文也可以从os传递给Service,BroadcastReceiver等。但是,几乎在某种情况下,这不是问题。只需查看此代码

if(context instanceof Activity)

随时使用。

答案 1 :(得分:3)

从技术上讲,可以使用任何上下文(通过LayoutInflater

创建视图

因此,除非您确定您的视图仅由活动实例化,否则我不建议这样做。这样做并不是一个干净的想法。

答案 2 :(得分:3)

我认为您可以使用以下代码段:

/**
 * Get activity instance from desired context.
 */
public static Activity getActivity(Context context) {
    if (context == null) return null;
    if (context instanceof Activity) return (Activity) context;
    if (context instanceof ContextWrapper) return getActivity(((ContextWrapper)context).getBaseContext());
    return null;
}

答案 3 :(得分:1)

虽然我无法想到这种情况,但我认为这不是一个好主意,原因有两个:

  1. 为什么您想要这样做,何时明确需要Activity?
  2. 如果明天这会改变怎么办,View会有其他背景?