Autore Topic: Errore Logcat  (Letto 473 volte)

Offline ciccioalex

  • Utente junior
  • **
  • Post: 58
  • Respect: 0
    • Mostra profilo
Errore Logcat
« il: 26 Marzo 2014, 15:11:20 CET »
0
salve,
sapete dirmi che tipo di errore viene lanciato? (la riga di codice al quale si riferisce è un oggetto con all'interno un'immagine e delle variabili).
03-26 04:15:42.480: E/AndroidRuntime(2197): FATAL EXCEPTION: main
03-26 04:15:42.480: E/AndroidRuntime(2197): Process: com.example.app, PID: 2197
03-26 04:15:42.480: E/AndroidRuntime(2197): java.lang.OutOfMemoryError
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.content.res.Resources.loadDrawable(Resources.java:2110)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.content.res.Resources.getDrawable(Resources.java:700)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at com.example.app.StartLevelGameActivity.onCreate(StartLevelGameActivity.java:128)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.app.Activity.performCreate(Activity.java:5231)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.app.ActivityThread.access$800(ActivityThread.java:135)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.os.Handler.dispatchMessage(Handler.java:102)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.os.Looper.loop(Looper.java:136)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at android.app.ActivityThread.main(ActivityThread.java:5017)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at java.lang.reflect.Method.invokeNative(Native Method)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at java.lang.reflect.Method.invoke(Method.java:515)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-26 04:15:42.480: E/AndroidRuntime(2197):    at dalvik.system.NativeStart.main(Native Method)

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Errore Logcat
« Risposta #1 il: 26 Marzo 2014, 15:24:46 CET »
0
Basta leggerlo: "java.lang.OutOfMemoryError", è un errore molto grave (FATAL EXCEPTION) non può essere intercettato, il programma viene per forza terminato all'istante.

Bitmap troppo grande non può essere contenuta nello spazio di memoria ancora libera riservata ai programmi che usano la Dalvik.
adb logcat | tee /tmp/logcat | grep TAG

Offline ciccioalex

  • Utente junior
  • **
  • Post: 58
  • Respect: 0
    • Mostra profilo
Re:Errore Logcat
« Risposta #2 il: 26 Marzo 2014, 15:42:02 CET »
0
come posso risolverlo?
« Ultima modifica: 26 Marzo 2014, 15:52:17 CET da ciccioalex »

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Errore Logcat
« Risposta #3 il: 26 Marzo 2014, 22:02:08 CET »
0
Esiste una sola soluzione: usare meno memoria.

Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Errore Logcat
« Risposta #4 il: 27 Marzo 2014, 12:12:28 CET »
0
come posso risolverlo?

Cominciando ad ottimizzare le risorse grafiche che stai caricando.
Poi se poi il codice che usi, possiamo anche fare altre considerazioni.

Offline ciccioalex

  • Utente junior
  • **
  • Post: 58
  • Respect: 0
    • Mostra profilo
Re:Errore Logcat
« Risposta #5 il: 27 Marzo 2014, 14:40:04 CET »
0
per "ottimizzare le risorse grafiche da caricare" che cosa intende?
Ho notato che se riduco il peso nel layout di determinate componenti l'app non va in crash.
« Ultima modifica: 27 Marzo 2014, 14:46:04 CET da ciccioalex »

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Errore Logcat
« Risposta #6 il: 27 Marzo 2014, 17:53:05 CET »
0
per "ottimizzare le risorse grafiche da caricare" che cosa intende?
Ho notato che se riduco il peso nel layout di determinate componenti l'app non va in crash.

Banalizzando, che non ha senso usare immagini da 10MB con una risoluzione 2000x1000 se poi finiscono in una imageView 96dpx96dp

Offline ciccioalex

  • Utente junior
  • **
  • Post: 58
  • Respect: 0
    • Mostra profilo
Re:Errore Logcat
« Risposta #7 il: 27 Marzo 2014, 18:09:25 CET »
0
Il frammento di codice dell'imageView è il seguente:
<LinearLayout
        android:id="@+id/header0"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_weight="4.5"
        android:orientation="vertical" >
   
            <ImageView
                     android:id="@+id/myImageView"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
            />
</LinearLayout>   

Guardando il graphical Layout ho notato che occupa poco meno di 1/2 del layout.
Le immagini hanno risoluzione di circa 500*300.
Solo alcune fra queste danno il problema descritto nel LogCat.
Devo ridurre ulteriormente la risoluzione?