web-dev-qa-db-fra.com

Les sorties d'applications au lieu de passer à l'activité suivante

J'appelle une activité par une intention simple:

Intent startNewActivityOpen2 = new Intent(this, TransitionLandscape.class);
if (extras != null) {
        if (!extras.isEmpty()) {

           startNewActivityOpen2.putExtras(extras);
        }
}

startActivity(startNewActivityOpen2);

Est-il important que cette activité actuelle soit également TransistionLandscape.class? L'application se ferme (sans se planter) au démarrage de la nouvelle activité. En passant par le débogueur, la nouvelle activité n'est jamais appelée: (onCreate in n'est jamais appelé) 

D'après la documentation, il semble qu'une activité puisse s'appeler elle-même. 

Logcat :

12-10 21:08:23.410 543-553/? I/ActivityManager: START u0
{cmp=com.assistek.ediary/.TransitionLandscape (has extras)} from pid
4801
12-10 21:08:23.470 543-573/? D/dalvikvm: GC_FOR_ALLOC freed 437K, 18% free 14435K/17524K, paused 51ms, total 52ms
12-10 21:08:23.490 4801-4801/com.assistek.ediary D/Base Activity: **********Pause class com.assistek.ediary.TransitionLandscape
    **********Pause Navigate: true
    **********Resume class com.assistek.ediary.TransitionLandscape
    **********Focus: false Activity: class com.assistek.ediary.TransitionLandscape
12-10 21:08:23.500 4801-4801/com.assistek.ediary D/Base Activity: **********Pause class com.assistek.ediary.TransitionLandscape
    **********Pause Navigate: false
12-10 21:08:23.520 543-600/? I/InputReader: Reconfiguring input devices.  changes=0x00000004
    Device reconfigured: id=2, name='elan-touchscreen', size 800x1280, orientation 0, mode 1, display id 0
12-10 21:08:23.520 543-1012/? I/ActivityManager: Config changes=480 {1.0 310mcc170mnc en_US ldltr sw600dp w600dp h880dp 213dpi
lrg port finger -keyb/v/h -nav/h s.11}
12-10 21:08:23.540 961-961/? I/PCKeyboard: onConfigurationChanged()
12-10 21:08:23.580 543-561/? I/WindowManager: Screen frozen for +74ms due to Window{425793b8 u0 com.assistek.ediary/com.assistek.ediary.TransitionLandscape}
12-10 21:08:23.600 634-634/? D/PhoneStatusBar: mSettingsPanelGravity = 8388661
12-10 21:08:23.690 543-1045/? I/ActivityManager: Killing 1995:com.google.Android.setupwizard/u0a50 (adj 15): empty #17
12-10 21:08:23.720 4801-4801/com.assistek.ediary W/IInputConnectionWrapper: showStatusIcon on inactive InputConnection
12-10 21:08:23.730 4801-4801/com.assistek.ediary D/Base Activity: **********Stop Navigate Away false
    **********Stop class com.assistek.ediary.TransitionLandscape
    **********Stop Focus ToClass class com.assistek.ediary.TransitionLandscape
    Task ID 151
    **********Destroy class com.assistek.ediary.TransitionLandscape
12-10 21:08:23.740 4801-4801/com.assistek.ediary D/Time calculation:: Destroy: class
com.assistek.ediary.TransitionLandscape
12-10 21:08:25.660 543-561/? D/dalvikvm: GC_EXPLICIT freed 287K, 18% free 14449K/17524K, paused 8ms+5ms, total 78ms
12-10 21:08:26.430 543-600/? I/InputReader: Reconfiguring input devices.  changes=0x00000004
    Device reconfigured: id=2, name='elan-touchscreen', size 800x1280, orientation 1, mode 1, display id 0
12-10 21:08:26.430 543-566/? I/ActivityManager: Config changes=480 {1.0 310mcc170mnc en_US ldltr sw600dp w961dp h528dp 213dpi lrg land
finger -keyb/v/h -nav/h s.12}
12-10 21:08:26.460 961-961/? I/PCKeyboard: onConfigurationChanged()

Aussi, appelant:

recreate() 

au lieu d'aller à une nouvelle activité, provoque également la fermeture de l'application (sans blocage).

EDIT: Manifeste

        <activity
        Android:name=".TransitionLandscape"
        Android:configChanges="orientation"
        Android:label="@string/app_name"
        Android:launchMode="singleTask"
        Android:screenOrientation="landscape"
        Android:windowSoftInputMode="stateHidden">
    </activity>

En fait, toute activité que j'appelle après TransitionLandscape entraîne la fermeture de l'application. Est-ce un problème de mémoire? 

4
Kristy Welsh

Votre application se bloque après cette intention, lorsque la configuration modifiée est reçue.

12-10 21:08:23.520 543-600/? I/InputReader: Reconfiguring input devices.  changes=0x00000004
    Device reconfigured: id=2, name='elan-touchscreen', size 800x1280, orientation 0, mode 1, display id 0
12-10 21:08:23.520 543-1012/? I/ActivityManager: Config changes=480 {1.0 310mcc170mnc en_US ldltr sw600dp w600dp h880dp 213dpi
lrg port finger -keyb/v/h -nav/h s.11}
    12-10 21:08:23.540 961-961/? I/PCKeyboard: onConfigurationChanged()
12-10 21:08:23.740 4801-4801/com.assistek.ediary D/Time calculation:: Destroy: class
com.assistek.ediary.TransitionLandscape

pouvez-vous essayer avec 

Android:configChanges="orientation|screenSize|keyboardHidden" />

Vous pouvez également vérifier cette link

2
nkalra0123

Vous demander de bien vouloir changer les lignes ci-dessous.

Android:configChanges="orientation"

À

Android:configChanges="orientation|screenSize|keyboardHidden" />

Dans votre fichier manifeste.

1
Akshay Sharma

ce n'est pas un problème de mémoire,  

cette ligne de votre journal indique clairement que vous avez un problème lorsque vous modifiez l'orientation de l'activité ( onConfigurationChanged () )

WindowManager: Écran gelé pendant + 74 ms en raison de la fenêtre

dans le fichier manifeste, il ne sera pas possible de recréer une activité en changeant l'orientation de votre appareil 

essayez de changer/définir l'orientation de l'application avec le code sur recréer () méthode ou dans onCreate () méthode

setRequestedOrientation(Configuration.ORIENTATION_LANDSCAPE);
0
Rohit Chauhan

Je pense que vous devriez essayer de supprimer le "bloc de code Ajout d’extras" pour savoir que si le problème commence par celui-ci ou que vous pouvez également modifier légèrement votre activité TransitionLandScape, par exemple en supprimant la balise launchMode = "singleTask" dans le fichier manifeste, ... app à nouveau pour vérifier que vous avez résolu le problème. C'est juste mon avis et je ne suis pas très bon en anglais, désolé s'il y a une erreur de grammaire.

0
Tăng Tấn Tài