Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 跳过37帧!太多的活动/意图?_Java_Android_Android Intent_Android Activity - Fatal编程技术网

Java 跳过37帧!太多的活动/意图?

Java 跳过37帧!太多的活动/意图?,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,当我试着运行我的应用程序时,我不断地遇到这个错误,我想这可能是因为我有太多的活动/意图,因为我在包含它们之后遇到了错误。但我不确定这是否是问题所在。“我的选项”菜单的“活动”也会打开一次,但当我再次尝试打开它们时,它们不会再打开,我认为这可能是问题所在 以下是我的意图代码: 主要活动 @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if

当我试着运行我的应用程序时,我不断地遇到这个错误,我想这可能是因为我有太多的活动/意图,因为我在包含它们之后遇到了错误。但我不确定这是否是问题所在。“我的选项”菜单的“活动”也会打开一次,但当我再次尝试打开它们时,它们不会再打开,我认为这可能是问题所在

以下是我的意图代码:

主要活动

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_home) {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    } else if (id == R.id.action_eda) {
        Intent intent2 = new Intent(this, EdaInfoActivity.class);
        startActivity(intent2);
    } else if (id == R.id.action_about) {
        Intent intent3 = new Intent(this, AboutMe.class);
        startActivity(intent3);
    }

    return true;
}
还有我的Android清单

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable"/>
    </activity>
    <activity
        android:name=".NewsItemActivity"
        android:parentActivityName=".MainActivity">
    </activity>
    <activity android:name=".EdaInfoActivity">
        <intent-filter>
            <action android:name="android.intent.action.INFO"/>
        </intent-filter>
    </activity>
    <activity android:name=".AboutMe">
        <intent-filter>
            <action android:name="android.intent.action.ABOUT"/>
        </intent-filter>
    </activity>
</application>

我想这可能是因为我有太多的活动/意图,因为我在包含它们后得到了错误

这不是问题所在。您不会同时运行这些活动中的多个,因此这不是导致错误的原因。(可能是添加具有以下错误的某些活动的巧合。()


问题是您正在前台线程上执行“长时间运行(阻塞)”处理

Android有一个线程可以拥有的“循环器”。默认情况下,UI线程有一个,这是通过处理程序处理消息和可运行的。当这个循环器阻塞超过5秒时,会出现ANR(应用程序无响应)错误

当您的应用程序在UI线程中花费的时间太长,但没有那么长时,您可能会得到上面的错误

您应该查看正在运行的计算复杂的操作,并至少在AsyncTask中运行它们,或者将它们作为可运行的运行


Android中的并发性是一个非常复杂的话题,我甚至不想真正触及如何为您“解决它”。 Doug Schmidt(完整披露,我的博士顾问,我帮助创建了一些他在课堂上展示的示例等)制作了一些好的视频,他在282课程(系统编程(在android平台上),在那里你可以学习并发和服务)

以下是这些课堂讲座的播放列表:


我想说这不是重复,因为他对错误产生的原因的推理是错误的。错误没有出现是因为他有多个活动。(这是需要指出的事情)我在这方面没有找到我的问题的答案。也许这可以帮到你: