因为我真的很烦恼为Android(数据库,Toast,首选项)中的大多数操作传递Context。我想知道这是一种编程初始化这些元素的好方法(例如在Application-Class中)。
它工作得很好,我不必将元素从Class传递给类,我看不出任何缺点。这就是我想问你们的原因。我为什么不用这个?
对于那些不知道我的意思的人:
MainApplication:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
VolleySingleton.init(this);
Toaster.init(this);
PrefUtilities.init(this);
}
}
烤面包机:
public class Toaster {
private static Toaster mInstance = null;
private Context context;
private Toast currentToast;
private Toaster(Context context) {
this.context = context;
}
public static void init(Context context) {
mInstance = new Toaster(context);
}
public static void toast(String message){
if (mInstance.currentToast != null){
mInstance.currentToast.cancel();
}
mInstance.currentToast = Toast.makeText(mInstance.context, message, Toast.LENGTH_SHORT);
mInstance.currentToast.show();
}
}
我也对这个问题感兴趣,为什么需要Toast或其他东西的上下文?我可以使用Toast的应用程序上下文,并在每个Activity / Fragment中访问。为什么Android-Team以这种方式实现它?
所以基本上有两个问题:
1。我的实施(内存,时间)是否有任何缺点?
2。为什么像Toast这样的课程需要一个上下文?
答案 0 :(得分:1)
<强> 1。我的实施(内存,时间)是否有任何缺点?
好吧,你总是在启动你的数据库,即使你在那个会话期间根本不使用它,对于其他类也是如此。无法想到其他任何事情,因为无论如何你都会使用应用程序上下文,至少对数据库而言。
<强> 2。为什么像Toast这样的课程需要一个上下文?
Toast需要一个上下文,因为它接触UiThread,所以需要一个引用来访问该线程。