java - 可以使用哪些不同类型的上下文来代替活动?
问题描述
我正在阅读 admob 中介文档,我看到了这一点,但我很困惑,因为我认为当你使用“this”时,它指的是你所在的活动。它说他们建议传入一个 Activity 实例,例如下面。我认为这是唯一可能的方式,任何人都知道我将传递的上下文不是我当前的活动的示例吗?
adView = new AdView(this);
解决方案
“我正在阅读 admob 中介文档,我看到了这个,但我很困惑,因为我认为当你使用“this”时,它指的是你所在的活动。”
你说的有点不对。this
指的是您当前的对象。从Java 文档:
在实例方法或构造函数中,
this
是对当前对象的引用——正在调用其方法或构造函数的对象。您可以使用 . 从实例方法或构造函数中引用当前对象的任何成员this
。
例如,this
在匿名类中会引用对象类:
View view;
view.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// this will refer to View.OnClickListener object.
}
});
我认为这是唯一可能的方式,任何人都知道我将传递的上下文不是我当前的活动的示例吗?
您还可以在Application
类中创建 AdView,尽管我从未推荐过:
public MyApp extends Application {
private AdView mAdView;
...
public void createAdView() {
// this will refer to MyApp which is a context.
mAdView = new AdView(this);
...
// the rest is history
}
}
或者有人会创建一个 Util 来生成AdView
但忘记将 Context 限制为 Activity:
public AdUtil {
private AdUtil(){}
...
// Here the parameter context can be Application, Activity, etc.
public static AdView createAdView(Context context) {
AdView adView = new AdView(context);
...
return adView;
}
}
推荐阅读
- reactjs - createPortal 作为子功能不起作用
- listview - 带有 Tiles 的 ListView 在 Flutter 中不起作用
- python - 在 Django 的其他模型方法中调用模型方法是一种好习惯吗?
- python - 如何修复“由于 EnvironmentError 无法安装软件包:[WinError 32]”
- c# - ListView 上奇怪的 ColorAnimation 和 MultiTrigger 行为
- release - Gitlab-ci 签署 maven 工件
- python - Django Channels websocket 通信不是真正异步的吗?
- c# - 用手指触摸旋转 3D 对象 Unity 3D
- google-sheets - 如何增加谷歌表格中单元格引用中的列值?
- exception-handling - Laravel 5.6 - 处理 Api 的内部服务器错误 (500) 的异常处理程序