【发布时间】:2014-05-12 03:51:17
【问题描述】:
如果被 Intent 调用,我的个性化相机会崩溃,但如果应用程序直接启动到相机,它可以工作。我的问题是,如果相机未设置为启动器,并且如果通过意图调用相机,则会显示相机,但如果按下捕获按钮,它将崩溃。
我有两堂课,第一堂课是startup screen,第二堂课是camera。启动屏幕是启动器,相机类是清单声明中的默认值。如果我运行应用程序,将显示启动屏幕,并且如果用户单击“启动相机”按钮,它将通过意图调用相机类,现在如果我点击/单击捕获按钮,相机会崩溃并停止。
这是我调用相机类的意图代码;
public void startCamera(View paramView)
{
Intent stCam = new Intent(GPSInitialize.this, MainActivity.class);
stCam.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
stCam.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(stCam);
locationManager.removeUpdates((LocationListener) GPSInitialize.this);
finish();
}
日志猫:
05-12 00:17:25.368: E/AndroidRuntime(1563): java.lang.OutOfMemoryError
05-12 00:17:25.368: E/AndroidRuntime(1563): at android.graphics.Bitmap.nativeCopy(Native Method)
05-12 00:17:25.368: E/AndroidRuntime(1563): at android.graphics.Bitmap.copy(Bitmap.java:555)
05-12 00:17:25.368: E/AndroidRuntime(1563): at com.joules.camera3100.MainActivity$3.onPictureTaken(MainActivity.java:443)
05-12 00:17:25.368: E/AndroidRuntime(1563): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:917)
05-12 00:17:25.368: E/AndroidRuntime(1563): at android.os.Handler.dispatchMessage(Handler.java:102)
05-12 00:17:25.368: E/AndroidRuntime(1563): at android.os.Looper.loop(Looper.java:136)
05-12 00:17:25.368: E/AndroidRuntime(1563): at android.app.ActivityThread.main(ActivityThread.java:5017)
05-12 00:17:25.368: E/AndroidRuntime(1563): at java.lang.reflect.Method.invokeNative(Native Method)
05-12 00:17:25.368: E/AndroidRuntime(1563): at java.lang.reflect.Method.invoke(Method.java:515)
05-12 00:17:25.368: E/AndroidRuntime(1563): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-12 00:17:25.368: E/AndroidRuntime(1563): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-12 00:17:25.368: E/AndroidRuntime(1563): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
你为什么要调用“finish();”在“startActivity(stCam);”之后?? finish() 将关闭活动。
-
我使用finish 来结束第一个活动或启动类。这就是为什么我把finish();实际上我会在调用另一个类之前关闭启动类,在这个视图中,如果预览相机,将使用最少的内存。这个方法是不是错了?
-
分享你的相机类和logcat的代码。
-
您在 onPictureTaken() 中进行了内存复制,导致 OutOfMemoryError。注意数据大小。
标签: android android-intent camera