4 votes

onCreate appelé avant et après onActivityResult

J'essaie d'ouvrir l'appareil photo de la manière suivante :

...
    private void runCamera() {
        String storageState = Environment.getExternalStorageState();
        if (storageState.equals(Environment.MEDIA_MOUNTED)) {

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File imageFile = new File(Singleton.instanse.mPushFilePath);
            mImageFileUri = Uri.fromFile(imageFile);
            intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
                    mImageFileUri);
            startActivityForResult(intent, CAMERA_RESULT);
    }
...

si je lance cette méthode, je lance les méthodes suivantes :

07-16 19:46:22.264: I/System.out(6875): -onPause
07-16 19:46:26.104: I/System.out(6875): -onStop

Je fais des photos, j'applique les méthodes suivantes :

07-16 19:46:41.217: I/System.out(6875): -onDestroy
07-16 19:46:41.284: I/System.out(6875): -onCreate
07-16 19:46:41.291: I/System.out(6875): -onStart
07-16 19:46:41.295: I/System.out(6875): -onActivityResult
07-16 19:46:41.295: I/System.out(6875): -onResume
07-16 19:46:41.295: I/System.out(6875): -onPostResume
07-16 19:46:41.522: I/System.out(6875): -onPause
07-16 19:46:41.522: I/System.out(6875): -onStop
07-16 19:46:41.522: I/System.out(6875): -onDestroy
07-16 19:46:41.604: I/System.out(6875): -onCreate
07-16 19:46:41.612: I/System.out(6875): -onStart
07-16 19:46:41.616: I/System.out(6875): -onResume
07-16 19:46:41.616: I/System.out(6875): -onPostResume

Pourquoi onDestroy fonctionne-t-il deux fois ? Comment résoudre ce problème ? Ce problème est apparu sous Android 2.2. Dans Android 2.3.3 onDestroy n'est jamais appelé !

15voto

ArtKorchagin Points 3403

En fait, c'est la caméra qui provoque le changement d'orientation de votre activité, c'est pourquoi votre activité est détruite et recréée.

Ajoutez ceci dans votre fichier manifeste, cela empêchera le changement d'orientation et votre activité ne sera pas détruite et recréée.

<activity
    android:name=".YourActivity"
    android:configChanges="orientation|keyboardHidden"
    android:screenOrientation="portrait" >
</activity>

Activité tuée / onCreate appelée après avoir pris une photo via l'intention

4voto

Alex Lockwood Points 31578

onDestroy n'est pas garantie d'être appelée. Assurez-vous de sauvegarder l'état persistant dans onPause plutôt que onStop y onDestroy . Il ne faut jamais se fier à l'un ou à l'autre onStop o onDestroy à appeler.

1voto

max4ever Points 2420

OnDestroy n'est pas garanti d'être exécuté sur n'importe quelle version d'Android, si c'est le cas vous devez faire quelque chose de rapide et renvoyer

voir aussi ceci L'activité OnDestroy n'est jamais appelée ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X