Ack*_*man 3 java singleton android facebook-sdk-3.0
我有一个facebook初始化sdk调用,我需要它来初始化应用程序启动的时刻:
我想使用我的Application类来做到这一点.例如:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
FacebookSdk.sdkInitialize(getApplicationContext());
}
}
Run Code Online (Sandbox Code Playgroud)
我有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) {
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
如何调用我的应用程序单例?如何使其onCreate()工作?
See*_*ker 13
当您扩展android.app.Application类时,您不必显式调用onCreate.但请确保在AndroidManifest.xml中指定它,例如android:name ="完全限定名称", 例如:android:name ="com.example.MyApplication"
您不必实现Singleton模式原因Application IS ALREADY A SINGLETON,只有一个Application实例.并且,要获取Application 的实例或您定义的Application的任何自定义子项,您只需调用context.getApplication()即可.
参考https://developer.android.com/reference/android/app/Application.html
要使您的App类单例遵循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());
}
}
Run Code Online (Sandbox Code Playgroud)
}
然后在任何其他类中使用它:
App.getInstance().initFBSdk();
Run Code Online (Sandbox Code Playgroud)
如果这是你要求的..