我创建了一个抽象类FbActivity,它使用Facebook的Android SDK扩展Activity以连接到Facebook。如下所示:
public abstract class FbActivity extends Activity {
private static final String APP_ID = "xxxxxxxxxxxxx";
protected Facebook mFacebook;
/*
* Override onCreate to connect to facebook.
*/
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFacebook = new Facebook(APP_ID);
setFbConnection();
}
我是否希望每个FbActivity
实例化自己的Facebook变量,或者我应该创建Facebook变量static
,因此整个应用程序只有一个变量?或者我应该使用singleton
类型的设置,如下所示......
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mFacebook == null) {
mFacebook = new Facebook(APP_ID);
}
setFbConnection();
}
如果您对这个确切的问题没有答案,那么请从Facebook变量中抽象出来。什么时候有一个静态变量“更好”(特别是在这样的继承情况下)?
答案 0 :(得分:1)
仅使用一个单例对象来存储数据(显然)比使用多个非单例变量需要更少的内存。但是,应该同步对静态单例的访问以防止线程问题,这使得访问速度稍慢。 单身人士的另一个专业人士可能是他们在你的代码中更容易使用(没有引用应该传递的变量),但静态通常会导致丑陋的编码实践。
在你的情况下,我会自己使用单身,主要是为了限制连接数。但请注意,使用单身人士是个人偏好的问题。看一下more discussion on this.
的这篇文章