Случайное ActivityNotFoundException при запуске Intent - PullRequest
1 голос
/ 05 января 2012

У меня есть приложение, которое работало в сотни раз нормально, но очень редко я получаю исключение при попытке запуска действия:

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 голосов
/ 05 января 2012

Если вы запускаете программу в эмуляторе, то я предполагаю, что вы часто отлаживаете изменения. Если это не так, просьба дать пояснения, однако я пока основываю свой ответ на этом предположении ...

Когда приложение запускается в среде разработки или отладки, либо на эмуляторе, либо на устройстве, происходит много всего. В результате он может искажать время загрузки, установки, удаления и т. Д. Чаще всего это происходит после быстрой смены на уже запущенном устройстве (то есть устройстве, подключенном через USB, или на эмуляторе, который вы оставляете открытым при работе разработка).

Чтобы запустить это на устройстве, оно делает следующее: 1. Перестраивает приложение (если были какие-либо изменения) 2. Проверяет, соответствует ли приложение приложению на устройстве. 3. Удаляет / переустанавливает приложение 4. Запускает приложение.

Если во время этого процесса все произойдет слишком быстро, он может неправильно прочитать ваш файл манифеста и «испортить» (не совсем) вашу сборку. Если это происходит только с перерывами, то это просто эмулятор на минуту. Если проблема возникает, а затем продолжается до тех пор, пока вы не сделаете что-то конкретное, это среда разработки теряется. Что касается первой проблемы, то на самом деле вы ничего не можете сделать, но иногда не нажимаете так быстро ... Во второй - просто «очистите» проект (в Eclipse это делается нажатием Project -> Clean). Это избавит от кешированной информации и создаст ее заново. Это заставляет ваше приложение вести себя так, как будто оно было блестящим и новым. Что-то еще, что я нахожу, помогает иногда удалить приложение вручную от устройства также. Я делаю это только со сложными приложениями, которые используют несколько библиотек, или когда ContentResolver зависает из-за ошибки контента.

Надеюсь, это поможет, FuzzicalLogic

0 голосов
/ 05 января 2012

Пожалуйста, добавьте оба действия в файл манифеста, как этот

                   <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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...