Intereting Posts
Синхронизация нескольких окон с несколькими видами в Android Зависимость HTTP-клиента apache в андроиде с API Google Файл ресурса Xamarin Android не найден Как я могу использовать layout_weight в представлении элементов RecyclerView или ListView, чтобы элементы с равной высотой заполняли доступное пространство на экране? Как передать сложные данные между Сервисом и активностью? Flurry ничего не делает в android Как прокручивать веб-страницу Разрешить неустойчивую Android Gradle строить на Jenkins Ссылка android.target.classpath не найдена ViewPager внутри фрагмента теряет содержимое при возврате к нему Android: Service vs SingleTop Activity перемещен на задний план – в чем разница? Игра поиска слов: как выбрать несколько элементов в GridView путем перетаскивания? (Android) Как вы можете сделать поддержку распознавания речи эмулятором Android Nexus 10 camera.release висит в течение 30 секунд Нечисловой второй аргумент в "wordlist"

Исключение при запуске приложения из Eclipse

У меня эта проблема уже почти 2 месяца, и я не могу понять это. Проблема в том, что если мое приложение запущено и я запустил (переустановил) мое приложение из Eclipse, я получаю сообщение об ошибке, указывающее, что мое приложение разбилось «К сожалению, остановилось». Я замечаю, что это также происходит, когда я отключаю его от своего ПК / Eclipse, я думаю, что это происходит только после того, как я не запускаю его некоторое время.

Это происходит только в том случае, если приложение активно в третьем BaseDiagramActivity ( BaseDiagramActivity ), а затем снова запускаю приложение из Eclipse. Я удалил в основном все приложения, кроме трех видов деятельности, и это все еще происходит.

Я искал и искал решение этой проблемы, но не могу найти ни одного хорошего ответа или того, который применим ко мне.

Это не похоже на проблему с аппаратной или андроидной версией, так как я запускаю ее на своем планшете (4.0.3), а мой телефон (4.0.2, происходил в версии 4.0.1 перед обновлением). Если, конечно, это бутерброд с мороженым.

Сообщите мне, требуется ли дополнительная информация.

Исключение (Tag = AndroidRuntime)

 FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException at android.app.LoadedApk.makeApplication(LoadedApk.java:482) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3938) at android.app.ActivityThread.access$1300(ActivityThread.java:123) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1185) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:362) at android.app.LoadedApk.getClassLoader(LoadedApk.java:305) at android.app.LoadedApk.makeApplication(LoadedApk.java:474) ... 11 more 

Код Android

LoadedApk.initializeJavaContextClassLoader () – строка 362, по-видимому, является нарушителем

Ниже приведены соответствующие файлы:

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="[my package]" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name="HomeActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="LoadDiagramActivity" android:label="Load Diagram"></activity> <activity android:name="BaseDiagramActivity" android:label="Base Diagram"></activity> </application> </manifest> 

HomeActivity.java

 public class HomeActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home); Button diagramButton = (Button)findViewById(R.id.diagram); diagramButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { startActivity(new Intent(HomeActivity.this, LoadDiagramActivity.class)); } }); } } 

LoadDiagramActivity.java

 public class LoadDiagramActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.load_diagram_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; case R.id.add_new_diagram: startActivity(new Intent(this, BaseDiagramActivity.class)); return true; default: return super.onOptionsItemSelected(item); } } } 

BaseDiagramActivity.java

На самом деле не имеет значения, какова эта деятельность, исключение происходит до тех пор, пока начинается «третье» действие (или нажатие кнопки добавления на LoadDiagramActivity .

 public class BaseDiagramActivity extends Activity { } 

home.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/diagram" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Diagram" /> </LinearLayout> 

Дополнительная информация

Когда я удалил свой проект, чтобы попросить более простой ответ, я переместил все в пространство имен пакета. В фактическом проекте есть 5 пространств имён, они все еще присутствовали, когда я тестировал с урезанной версией, но просто не вызывал (насколько я мог видеть).

Вот пакеты:

  • [package] – общая логика
  • [package].activities – все действия и базовые действия
  • [package].database – все взаимодействие с базой данных
  • [package].models – модели для сохранения / загрузки данных
  • [package].renderables – объекты, нарисованные на холсте

Я попытался добавить атрибут `android: sharedUserId 'в манифест, и он, казалось, ничего не делал в оба раза, когда я пытался. Когда я изначально изучал это, я пришел к выводу, что идентификатор общего пользователя применяется только к различным проектам, а не к различным пакетам.

Кроме того, я не думаю, что было какое-то взаимодействие с базой данных, когда я все лишился. Тот факт, что 3-я деятельность может быть любой деятельностью, даже HomeActivity, была чем-то против этой теории.

Полезные ссылки

  • Stackoverflow: android.app.Application не может быть создан из-за NullPointerException
  • GreoCode android.app.LoadedApk 4.0.1
  • Возможное состояние гонки?
  • Проблема с Android # 25869

Обновление 1/11/2012

Последние пару дней, когда я вернулась в этот проект, я создал совершенно новый проект в Eclipse Juno (ранее был на Helios) и передал все вручную, чтобы инструменты Eclipse и Android обрабатывали практически все взаимодействия Manifest, но они все еще встречаются , Я посмотрю на это немного больше в течение следующих нескольких дней и обновляюсь, если найду что-нибудь.

FYI мой новый проект нацелен на следующее:

 <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="15" /> 

Новая структура проекта также имеет все действия в корневом пакете (т. Е. [Package], а не [package] .activities). Я также использую синтаксис (new?), Чтобы показать родительскую активность:

 <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="[my package].LoadDiagramActivity" /> 

Он также по-прежнему происходит на моем обновленном Galaxy Nexus, на котором работает Jellybean 4.1.2.

Попробуйте добавить еще одну вещь в файл манифеста, я уверен, что вы уже пробовали ..

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="[my package]" android:versionCode="1" android:versionName="1.0" android:sharedUserId="com.mj.app" > 

Похоже, в вашем проекте у вас есть несколько com.package.p1 , com.package.p2 ,com.package.p3 как com.package.p1 , com.package.p2 ,com.package.p3 ..

И при запуске вы находитесь в p1 а затем переходите к p2 - p3 … и в то время вы пытаетесь запустить его снова … так что Android дает вам ошибку.

Если вы поместите 13 в свой minSdkVersion , он должен работать.

Либо это, либо вам нужно setDisplayHomeAsUpEnabled(false) в onCreate() других ваших действий.

Оба эти решения должны работать.

Начиная с уровня API 14 в соответствии с документацией , setHomeButtonEnabled(true) больше не выполняется для вас по умолчанию, и в нем говорится, что

Установка опции DISPLAY_HOME_AS_UP будет автоматически включать домашнюю кнопку.

Таким образом, мы можем сделать вывод, что setDisplayHomeAsUpEnabled(false) работает аналогично setHomeButtonEnabled(false)

Если я не ошибаюсь, это происходит только при переустановке приложения из Eclipse Run-> As. Так что это вряд ли произойдет, когда пользователь обновится через Play. Я могу сказать это с уверенностью, так как я заметил свое приложение тоже с этим исключением во время переустановки через Eclipse, но ничего не было в Crittercism.

Чтобы исправить это, я работал над решением проблемы потребления памяти в моем приложении.

  1. Если у вас есть только один набор чертежей, измените это. Создайте drawables-mdpi и скопируйте весь файл из этой папки 1 drawables (drawables, drawable-ldpi). Если у вас всего 1 комплект, Android изменит его размер на более крупные экраны, поэтому внутренне занимает слишком много памяти, и очистка такого типа памяти (растрового изображения) будет подвержена ошибкам. Звучит безумно, но творит чудеса. Не верьте мне, запустите его под часами использования памяти кучи до и после этого изменения, вы заметите, что ваше приложение занимает на 25% меньше памяти для общего сценария.
  2. Если вы выполняете какие-либо операции Bitmap, вы можете рассмотреть возможность уменьшения масштаба. По крайней мере, когда вы устанавливаете параметры, вы, безусловно, хотите их уменьшить. Проверьте здесь и здесь . Поиск или уменьшение масштаба.
  3. Наконец, не забывайте bitmap.recycle(); bitmap = null; bitmap.recycle(); bitmap = null; В вашем onDestroy и перед всеми System.exit (0).

Android делает много фоновой работы, а переустановка – это внезапное ожидание от приложения. Невозможно очистить память. Это исключение является одним из тех internal . Поэтому не думайте, что это просто.

Вы не добавили период к именам ваших действий в атрибутах android:name манифеста. Возможно, это вызывает проблему.

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

"setContentView(rid)" свой код, я чувствую, что вы пропускаете, чтобы установить "setContentView(rid)" в LoadDiagramActivity . Попробуйте установить представление в onCreate() .

Надеюсь, что это поможет вам.

Вам нужно добавить "." Перед названием activity в Menifest .

Как это

 <?xml version="1.0" encoding="utf-8"?> 

 <uses-sdk android:minSdkVersion="14" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".HomeActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".LoadDiagramActivity" android:label="Load Diagram"></activity> <activity android:name=".BaseDiagramActivity" android:label="Base Diagram"></activity> </application> 

Я обновляю деятельность вашего манифеста. Пожалуйста, проверь это…

Нет ничего плохого в коде, который вы нам дали. Я просто попробовал это в новом проекте с именем пакета com.test, и он работал безупречно. Единственное, что я добавил в файлы, это объявление пакета. (И я добавил load_diagram_menu.xml, конечно.)

Если возможно, было бы здорово, если бы вы могли предоставить нам доступ к полному проекту. Если проект работает на чужом компьютере, скорее всего, это Eclipse или плагин Android Eclipse, который плохо себя ведет. Чистая установка Eclipse решит это. (Хотя я понимаю, как быть в автономном режиме может сделать это сложно. :-))

Для этого обязательно проверяйте «Build Automatically» при очистке проекта. (Project -> Build Automatically)