有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Libgdx Android:onCreate()之后未调用onStart()方法

onStart()

我知道onStart()方法是在onCreate()之后调用的(通过Activity Lifecycle documentation),但在我的LibGDX项目中,这不会发生。我有以下代码:

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

但只有当我从后台恢复应用程序时,调试终端中的字符串才会出现。我需要在活动初始化之后,当它变得可见时做一些事情

编辑:更多代码

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);
            }
        });
    }
}

我就是这么做的。但是onStart()可以做任何事情


共 (2) 个答案

  1. # 1 楼答案

    启动应用程序后,您需要等待多长时间

    你必须记住,你的应用程序可能需要一段时间才能启动。如果你说的是真的,那么你就不会看到Gdx调试了——它仍然会在onStart()上触发

    所以我假设:

    • 你启动了一个应用程序
    • 你不想等待,所以你要最小化它
    • 打开它,onStart()结束,您会看到调试日志

    顺便问一下,你能展示更多的代码吗

    同时看看Android应用的生命周期。 Android lifecycle

  2. # 2 楼答案

    在Libgdx应用程序启动之前,不能使用Gdx.app.debug()。我不确定这是否发生在onStart()之前,因为libgdx没有在UI线程上运行。此外,还必须先使用Gdx.app.setLogLevel(Application.LOG_DEBUG),否则对Gdx.app.debug()的调用将不起任何作用

    但是你可以用Android的Log.d()来代替