我正在创建一个非常简单的应用程序来为游戏进行一些计算,我偶然发现了无休止的活动重新加载循环。我不知道是什么导致了这个循环,因为确实没有任何数据表明要检查什么(我的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。
答案 0 :(得分:3)
问题是MainActivity
是IntroActivity
的子类。当MainActivity
执行时,其onCreate()
方法正在调用super.onCreate()
IntroActivity
的{{1}},您再次启动onCreate()
,致电MainActivity
等, ad infinitum 。
super.onCreate()
似乎并不需要扩展MainActivity
,因此只需将其设为常规IntroActivity
子类。
Activity