小编Rox*_*era的帖子

Android应用在方向更改期间丢失数据

我有一个应用程序,我从一个捕获图像的教程中复制了MediaStore.ACTION_IMAGE_CAPTURE.当我在手机上运行应用程序时,我有一些奇怪的感觉.

即使我没有移动手机,相机应用程序本身也会在操作过程中翻转其方向几次.在返回教程应用程序之前,它会简要地进入横向模式.因此,教程应用程序在控制返回到它后会回到纵向模式,并且图像丢失.我尝试将相机活动的方向设置为横向,图像不会丢失.

但该应用程序的布局适用于纵向模式.或者,如果我在拍摄照片的同时横向握住相机,我可以在应用程序恢复焦点后转动手机,而不会丢失图像.

我在网上做了一些讨论.Stackoverflow上有人提到方向的改变引起了额外的调用onCreate." onCreate()被调用的原因是因为当您在纵向方向上调用相机活动时,它将改变方向并破坏您之前的活动." 我在调试模式下运行应用程序,在onCreate和onActivityResult方法中设置了断点.onCreate当我以肖像模式拍摄照片时,确实会被调用.调用的顺序是onCreate,onActivityResult,onCreate.如果我以横向模式拍摄照片(这是我的相机应用程序以任何方式结束的地方),onCreate不会被调用.现在我已经知道发生了什么,我该如何避免这个问题?这是应用程序现在的样子:

package com.example.testapp;

import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;

public class CameraActivity extends Activity implements View.OnClickListener {

    ImageButton ib;
    Button b;
    ImageView iv;
    Intent i;
    final static int cameraData = 0;
    Bitmap bmp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.photo_activity); …
Run Code Online (Sandbox Code Playgroud)

android orientation

6
推荐指数
3
解决办法
1万
查看次数

标签 统计

android ×1

orientation ×1