启动Intent时随机ActivityNotFoundException

时间:2012-01-05 12:23:23

标签: android exception

我有一个应用程序,运行数百次,但很少在尝试启动活动时遇到异常:

Intent tIntent = new Intent();
tIntent.setClass(App.ctx, MyClassActivity.class);
startActivity(tIntent);

在清单中我宣布:

activity android:name="MyClassActivity" android:launchMode="singleTask"

例外:

 01-01 10:41:33.723: E/AndroidRuntime(3867): android.content.ActivityNotFoundException: 
 Unable to find explicit activity class {my.package/my.package.MyClassActivity}; 
 have you declared this activity in your AndroidManifest.xml?

任何可能导致此问题的提示?例外是非常随机和罕见的。应用程序在模拟器上启动。

我已经阅读了android.content.ActivityNotFoundException:个问题,但问题是系统的,而不是像这里的随机问题。

2 个答案:

答案 0 :(得分:0)

请在清单文件中添加这两项活动

                   <activity android:name=".MyClassActivity"
              android:label="@string/app_name"
              android:theme="@android:style/Theme.NoTitleBar"
              android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="com.pkg.MyClassActivity"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity> 

答案 1 :(得分:0)

如果您在模拟器中运行程序,那么我将假设您经常调试更改。如果情况并非如此,请澄清,但是,我现在将根据这个假设作出答案......

每当应用程序在开发或可调试环境中运行时,无论是在模拟器还是设备上,都会发生很多事情。因此,它可能会扭曲加载时间,安装,卸载等。大多数情况下,这是在快速更改已启动的设备(即通过USB插入的设备或您保持打开的模拟器)之后发生的开发)。

要在设备上启动此操作,它会执行以下操作:  1.重建应用程序(如果有任何更改)  2.检查应用程序是否与设备上的应用程序匹配。  3.卸载/重新安装应用程序  4.运行应用程序。

在此过程中,如果事情发生得太快,它可能会误读您的清单文件并“损坏”(不是真的)您的构建。如果它只是间歇性地发生,那么它只是模拟器失败了一分钟。如果问题发生,然后继续,直到您执行特定的操作,那么开发环境就会丢失。对于第一个问题,你真的没有什么可以做的,但有时候没有点击这么快......对于第二个,只需“清理”项目(在Eclipse中这是通过单击Project - &gt; Clean完成的)。这将删除缓存的信息并再次从头开始构建它。它使您的应用程序表现得像所有闪亮和新的。我发现的其他一些帮助有时也是从设备手动卸载应用程序。我只对使用多个库的复杂应用程序执行此操作,或者由于内容错误而导致ContentResolver挂起。

希望这有帮助, FuzzicalLogic