当前位置: 首页 > 面试题库 >

Android中应用程序单例的使用

陶弘业
2023-03-14
问题内容

我有一个facebook初始化sdk调用,启动应用程序时需要它来初始化:

我想使用我的Application类来做到这一点。例如:

public class App extends Application {

@Override
public void onCreate() {
    super.onCreate();
    FacebookSdk.sdkInitialize(getApplicationContext());
}
}

我的主要活动是使用Facebook登录按钮:

public class MainActivity extends AppCompatActivity {
@BindView(R.id.login_button)
LoginButton loginButton;

private CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);

    callbackManager = CallbackManager.Factory.create();
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException error) {

        }
    });
}
}

我怎么称呼我的申请单身人士?我如何使其onCreate()工作?


问题答案:

要使您的App类singleton遵循 Singleton设计模式

public class App
  {
    // Create the instance
    private static App instance;
    public static App getInstance()
    {
         if (instance== null) {
                synchronized(App.class) {
                        if (instance == null)
                                instance = new App();
                        }
                }
                // Return the instance
                return instance;
    }

    private App()
    {
        // Constructor hidden because this is a singleton
    }

    public void initFBSdk()
    {
        FacebookSdk.sdkInitialize(getApplicationContext());
    }
}

然后在其他任何类中使用它:

App.getInstance().initFBSdk();

如果这是您要的..



 类似资料:
  • 问题内容: 回顾这篇文章,列举了使用单例的几个问题, 并看到了使用单例模式的Android应用程序的几个示例,我想知道使用单例而不是通过全局应用程序状态共享的单个实例(将android.os.Application子类化并获取它)是否是一个好主意。通过context.getApplication())。 两种机制都有哪些优点/缺点? 老实说,我希望在此后的Singleton模式与Web应用程序中得

  • 我需要在整个Android应用程序中使用一个类的单个实例。我正在使用以下代码来实现这一点,我想确保这样做是正确的、线程安全的并且不会对性能产生影响。 每当我在应用程序中需要我的类的实例时,我就调用: 所以,我不想确定我在这里没有做错什么,这种方法在开发过程中不会造成任何问题,如果有更好的替代方案的话。

  • 因此,在android中,我想使我的应用程序类成为单例。 这样做: 不行。在运行时抛出以下错误: 这样做也是不可能的: 因此,我想使用而不是。 还有一个解释:我的应用程序中有类,例如,SharedReference单例,它是用上下文初始化的,作为单例,不能有参数。

  • 我们有一个应用程序,利用在应用程序计费。我们看到的问题如下: 当使用较高版本代码的构建被上传到Play Developer控制台时,In App Billing将停止在设备上的应用程序(使用较低版本代码)上工作,表示“应用程序未配置为计费”。 这很好,在测试的时候,但问题是--当应用程序在Google Play商店中时,会有什么行为?当您替换应用程序(以执行更新)时,处于野生状态(具有较低版本代码

  • 有人能给我解释一下这个LogCat输出以及如何解决它吗?我用手机(三星Galaxy Nexus)测试我的Android应用程序,就这样;系统强制拘留并将此打印在日志中...

  • 我明白了,我必须提到Proguard属性文件中的外部库。我该怎么提才是问题所在。 请查看我的proguard文件