java应用程序单例在Android中的使用
我有一个facebook initialize sdk调用,我需要它在应用程序启动时进行初始化:
我想用我的应用程序类来实现这一点。例如:
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) {
}
});
}
}
如何将我的应用程序称为singleton?如何使其onCreate()工作
# 1 楼答案
当你扩展android的时候。应用程序。应用程序类,则不必显式调用onCreate。但请确保在AndroidManifest中指定它。xml, 像这样的android:name=“完全限定名” 例如:android:name=“com.example.MyApplication”
您不必实现单例模式,因为应用程序已经是单例,您的应用程序只有一个实例。 而且,要获取应用程序的实例或您定义的应用程序的任何自定义子级,只需调用上下文即可。getApplication()
参考https://developer.android.com/reference/android/app/Application.html
# 2 楼答案
我认为您正在尝试在java中创建线程安全的单例。 下面是我们的
App
类所需的代码:这只是一个自我参照。我们想要实现一个用于多线程的单实例。然后,我们将创建另一个类,该类将
App
类封装在其构造函数中,如下所示:然后在
MainActivity
类中,您可以导入静态实例并在代码中使用它:例如,您可以在
MainActivity
类中使用它,只需调用方法initFacebookSdk()
,如下所示:# 3 楼答案
要使您的应用程序类
singleton
遵循单例设计模式:然后在任何其他类中使用它:
如果这是你想要的