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()可以做任何事情
# 1 楼答案
启动应用程序后,您需要等待多长时间
你必须记住,你的应用程序可能需要一段时间才能启动。如果你说的是真的,那么你就不会看到Gdx调试了——它仍然会在onStart()上触发
所以我假设:
顺便问一下,你能展示更多的代码吗
同时看看Android应用的生命周期。 Android lifecycle
# 2 楼答案
在Libgdx应用程序启动之前,不能使用
Gdx.app.debug()
。我不确定这是否发生在onStart()
之前,因为libgdx没有在UI线程上运行。此外,还必须先使用Gdx.app.setLogLevel(Application.LOG_DEBUG)
,否则对Gdx.app.debug()
的调用将不起任何作用但是你可以用Android的
Log.d()
来代替