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

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商店中时,会有什么行为?当您替换应用程序(以执行更新)时,处于野生状态(具有较低版本代码

  • 问题内容: 我正在使用WxPython开发GUI应用程序,但不确定如何确保在任何给定时间机器上仅运行我的应用程序的一个副本。由于应用程序的性质,多次运行没有任何意义,并且会很快失败。在Win32下,我可以简单地命名一个互斥体并在启动时进行检查。不幸的是,我不知道Linux中有什么设施可以做到这一点。 我正在寻找可以在应用程序意外崩溃时自动释放的内容。我不想因为我崩溃而不得不手动删除锁定文件而使用户

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