我可以知道,在Context
内总是将Activity
投放到View
是否安全?
View {
Activity activity = (Activity)this.getContext();
}
到目前为止,它一直很好用。我想知道,上面的代码会失败吗?
答案 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)
虽然我无法想到这种情况,但我认为这不是一个好主意,原因有两个:
View
会有其他背景?