2012-01-05 6 views
1

У меня есть приложение, которые запускают сотни раз хорошо, но очень редко я получаю исключение при попытке запустить активность:Случайного ActivityNotFoundException при запуске Намерения

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: вопрос, но там проблема систематическая, а не случайная, как здесь.

ответ

0

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

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

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

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

Надеется, что это помогает, FuzzicalLogic

+0

Спасибо за всесторонний ответ. Я также подозреваю, что это сбой эмулятора, но насколько я помню, когда произошло исключение, оно было в довольно чистом состоянии (например, никакая дополнительная сборка не загружалась в эмулятор, пока я нажимал на предыдущую). Также я регулярно удаляю приложение с помощью командной строки adb, поскольку мне нужно очистить настройки, и это самый быстрый способ сделать это для меня. – tmouse

+0

Я не думаю, что это действительно глюк в эмуляторе, но в самом adb.Я развиваюсь в Eclipse, и это происходит со мной на устройствах и эмуляции. Когда это происходит, я использовал для сброса adb, и он исправит его, но я обнаружил, что выше было быстрее и надежнее, поскольку adb иногда не перезапускался. –

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> 
+0

Какова причине добавления этого проявить? Мне любопытно, так как приложение работает отлично на сотнях устройств без дополнительных фильтров. Вы можете попробовать здесь: [TM.Lazor на Android Market] (https://market.android.com/details?id=info.tmouse.tlazor), извините за саморекламу, но, возможно, это поможет. – tmouse

Смежные вопросы