简体   繁体   中英

Libgdx Android: method onStart() not called after onCreate()

onStart()

I know that onStart() method is called after onCreate() ( via Activity Lifecycle documentation ), but in my LibGDX project this doesn't happen. I' ve this code:

@Override
protected void onStart()
{
    super.onStart();
    Gdx.app.debug(TAG, "onStart");
}

but the string in debug terminal appears only if I resume the app from background. I need to do stuff after the initialise of the activity, when it becomes visible.

EDIT: MORE CODE

public class AndroidLauncher extends AndroidApplication {

private final static String TAG = AndroidLauncher.class.getSimpleName();

GoogleResolver googleResolver;

GoogleSignInAccount acct;
private Preferences googlePrefs;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    googleResolver = new GoogleResolverAndroid();
    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
    config.useImmersiveMode = true;
    config.useGyroscope = false;
    config.useCompass = false;
    config.useAccelerometer = false;

    GoogleLoginHandler.getInstance().setContext(this.getContext());
    GoogleLoginHandler.getInstance().startApiClient();
    GameManager.getInstance().listener = googleResolver;

    initialize(new MainCrucy(), config);

    googlePrefs = Gdx.app.getPreferences(GOOGLE_PREF);
    GoogleLoginHandler.getInstance().mGooglePrefs =  Gdx.app.getPreferences(GOOGLE_PREF);

}

@Override
protected void onStart()
{
    super.onStart();
    Gdx.app.debug(TAG, "onStart");

    OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(GoogleLoginHandler.getInstance().getGoogleApiClient());
    if (opr.isDone())
    {
        Gdx.app.debug(TAG, "Loggato");
        GoogleSignInResult result = opr.get();
        handleSignInResult(result);
    } else {
        opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
            @Override
            public void onResult(GoogleSignInResult googleSignInResult) {
                handleSignInResult(googleSignInResult);
            }
        });
    }
}

This is what I do. But onStart() does anything

How long do you wait after launching you application?

You have to remember that your app can take time to Start. If what you say is true than you wouldn't see Gdx debug - it's still fires at onStart().

So I assume:

  • you launch an app
  • you don't want to wait so you minimize that
  • you open it and onStart() ends and you see debug logs

By the way, could you show more code?

In the meantime look at the life cycle of Android app. Android lifecycle

You can't use Gdx.app.debug() before the Libgdx application has had a chance to start up. I'm not positive if this happens before onStart() because libgdx doesn't run on the UI thread. Also, you must also use Gdx.app.setLogLevel(Application.LOG_DEBUG) first or calls to Gdx.app.debug() will do nothing.

But you can just use Android's Log.d() instead.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM