java - 改变 Activity

标签 java android

当我在使用表面 View 的游戏 Activity 和使用膨胀菜单的其他 Activity 之间切换时,我会收到错误消息。

日志猫:

07-13 15:15:34.464: ERROR/AndroidRuntime(15103): Uncaught handler: thread main exiting due to uncaught exception
07-13 15:15:34.594: ERROR/AndroidRuntime(15103): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.hitmanassault/com.android.hitmanassault.Hitman}: android.view.InflateException: Binary XML file line #7: Error inflating class <unknown>
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.app.ActivityThread.access$2200(ActivityThread.java:126)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.os.Looper.loop(Looper.java:123)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.app.ActivityThread.main(ActivityThread.java:4595)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at java.lang.reflect.Method.invokeNative(Native Method)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at java.lang.reflect.Method.invoke(Method.java:521)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at dalvik.system.NativeStart.main(Native Method)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class <unknown>
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.view.LayoutInflater.createView(LayoutInflater.java:513)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.app.Activity.setContentView(Activity.java:1629)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at com.android.hitmanassault.Hitman.onCreate(Hitman.java:42)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     ... 11 more
07-13 15:15:34.594: ERROR/AndroidRuntime(15103): Caused by: java.lang.reflect.InvocationTargetException
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at com.android.hitmanassault.HitmanView.<init>(HitmanView.java:52)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at java.lang.reflect.Constructor.constructNative(Native Method)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.view.LayoutInflater.createView(LayoutInflater.java:500)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     ... 21 more
07-13 15:15:34.594: ERROR/AndroidRuntime(15103): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:464)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:340)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:363)
07-13 15:15:34.594: ERROR/AndroidRuntime(15103):     at com.android.hitmanassault.HitmanView$HitmanThread.<init>(HitmanView.java:158)

编辑:背景图像代码

BitmapFactory.Options options = new BitmapFactory.Options();//Line 156
options.inSampleSize = 2;    // this will cut the sampling by 50%//Line 157
mBackground = BitmapFactory.decodeResource(getResources(),R.drawable.background, options );//Line 158

EDIT2:图像的构造函数

public HitmanThread(SurfaceHolder surfaceHolder, Context context, Handler handler ) {
this.mSurfaceHolder = surfaceHolder;
mHandler = handler;
mContext = context;
mRes = context.getResources();      

paint.setColor(Color.BLACK);

paint.setTextSize(16);

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;    // this will cut the sampling by 50%
mBackground = BitmapFactory.decodeResource(getResources(),R.drawable.background, options );
    }

编辑3:

我尝试在一些使用 2.2 及更高版本的较新手机上运行我的游戏。它之所以有效,是因为在不崩溃的情况下,无论如何都可以指定一定的虚拟机预算。遗憾的是,任何 16mb 或更少的东西都无法运行。我有 3.4mb 的堆和 1mb 的空闲空间,任何替代解决方案将不胜感激。

最佳答案

让我们从底部开始......

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

来自

at com.android.hitmanassault.HitmanView$HitmanThread.<init>(HitmanView.java:158)

我想在文件 HitmanView.java 的第 158 行中,您正在尝试加载一个大得令人发指的位图?

关于java - 改变 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6685951/

相关文章:

java - MapReduce:字符串索引超出范围

java - 用于检测从摄像机捕获的视频的广播接收器

java - 从一个类调用另一个类的方法

java - Android HttpClient 错误

java - 如何将 InputMethodService 与服务连接?

javascript - Webview 重定向问题

java - Libgdx动态改变表内的图像

java - 显示从开始日期到结束日期的日志文件名

java - 如何在 Android 中运行 Google map 动画时禁用触摸检测

android - 如何在 EditText 类中以编程方式设置文本位置?