Android - 活动在无限循环中重新启动

时间:2016-10-07 22:55:25

标签: java android android-intent android-activity

我正在创建一个非常简单的应用程序来为游戏进行一些计算,我偶然发现了无休止的活动重新加载循环。我不知道是什么导致了这个循环,因为确实没有任何数据表明要检查什么(我的logcat中没有任何红色)。

我的猜测是我的IntroActivity导致了这种混乱,因为无限循环有3秒的延迟。我检查了SO并找到了多个代码示例来创建这个延迟,并没有解决这个问题。它真的开始惹恼我了。 MainActivity类加载正常,布局看起来不错,但每3秒重新加载一次。

每次我在代码中更改某些内容时,我都会做一个干净的构建,以确保没有任何东西" old"加载到我的构建中,它没有帮助。我还尝试在IntroActivity类中的onCreate方法中完全隔离MainActivity调用,并且令人惊讶的是屏幕变为空白(设备进入循环 - 没有错误)。

这是我的简单IntroActivity类,启动我的MainActivity有3秒的延迟,我想创建所有按钮,textfileds等。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

public class IntroActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_intro);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(IntroActivity.this, MainActivity.class);
                i.setFlags(i.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(i);
                finish();
            }
        }, 3000);
    }
}

...这是我的MainActivity类:

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends IntroActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

如果它有任何帮助,这是我的表现。

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".IntroActivity"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:theme="@android:style/Theme.Black.NoTitleBar">
    </activity>
    <activity android:name=".GameActivity"
        android:theme="@android:style/Theme.Black.NoTitleBar">
    </activity>
</application>

我在Android Studio 2.2.0中构建此应用。我的设备是三星Galaxy Tab S 8.4。

1 个答案:

答案 0 :(得分:3)

问题是MainActivityIntroActivity的子类。当MainActivity执行时,其onCreate()方法正在调用super.onCreate() IntroActivity的{​​{1}},您再次启动onCreate(),致电MainActivity等, ad infinitum

super.onCreate()似乎并不需要扩展MainActivity,因此只需将其设为常规IntroActivity子类。

Activity