我应该为每个活动实例化一个新的Facebook变量,还是使用静态Facebook变量

时间:2011-06-12 16:03:29

标签: java android facebook-graph-api

我创建了一个抽象类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变量中抽象出来。什么时候有一个静态变量“更好”(特别是在这样的继承情况下)?

1 个答案:

答案 0 :(得分:1)

仅使用一个单例对象来存储数据(显然)比使用多个非单例变量需要更少的内存。但是,应该同步对静态单例的访问以防止线程问题,这使得访问速度稍慢。 单身人士的另一个专业人士可能是他们在你的代码中更容易使用(没有引用应该传递的变量),但静态通常会导致丑陋的编码实践。

在你的情况下,我会自己使用单身,主要是为了限制连接数。但请注意,使用单身人士是个人偏好的问题。看一下more discussion on this.

的这篇文章