【问题标题】:Android - Activity restarts in an endless loopAndroid - 活动在无限循环中重新启动
【发布时间】:2016-10-07 22:55:25
【问题描述】:

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

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

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

这是我的简单 IntroActivity 类,延迟 3 秒以启动我想要创建所有按钮、文本文件等的 MainActivity。

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。

【问题讨论】:

  • MainActivity extends IntroActivity - 你的问题。当您在MainActivity 中调用super.onCreate() 时,它会再次运行IntroActivityonCreate()。您确定要 MainActivity 成为 IntroActivity 的子类吗?也许只是extends Activity
  • " 游戏 我们 和我的女朋友一起玩" - 我们?此外,我们真的需要知道吗?
  • @Mike M. 就是这样!你有一双鹰眼,我的朋友。节省了我一些时间,所以我现在可以进行计算了。很好的答案,请发布它,以便我可以竖起大拇指并接受。 :)

标签: java android android-intent android-activity


【解决方案1】:

问题在于MainActivityIntroActivity 的子类。当MainActivity 执行时,它的onCreate() 方法正在调用super.onCreate(),即IntroActivityonCreate(),在这里你又开始MainActivity,调用super.onCreate() 等等,ad无限

MainActivity 似乎不需要扩展IntroActivity,所以只需将其设为常规的Activity 子类即可。

public class MainActivity extends Activity {
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2013-04-15
    相关资源
    最近更新 更多