1. 程式人生 > >Android中導致小米系列手機直接崩潰的主要原因。

Android中導致小米系列手機直接崩潰的主要原因。

1、在AndroidXML是經常且必須要做的,不正規配置XML時會導致有些手機崩潰,而有些手機卻沒有問題。

比如:小米2s,小米3,小米4絕對會出問題,別的機型錯誤軟體。

2、還有種情況就是XML引用一個自定義一個View的時候,構造器當中少寫了個構造,這種情況少寫了全部機型都會報錯。

public LoadingView(Context context, AttributeSet attrs){
super(context, attrs);

}

問題日誌大致如下:
 
E/dalvikvm-heap(29797): Out of memory on a 2791984-byte allocation.
 
E/AndroidRuntime(29797): FATAL EXCEPTION: main
 
全部是 “E/AndroidRuntime(29797):”這種標識的錯誤,後續省略之
 
android.view.InflateException: Binary XML file line #148: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:684)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at com.android.internal.policy.impl.MiuiPhoneLayoutInflater.onCreateView(MiuiPhoneLayoutInflater.java:44)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:731)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:756)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:817)
··············     ···············       ··············
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:658)
··············     ···············       ··············
Caused by: java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:827)
at android.content.res.Resources$Injector.createFromResourceStream(Resources.java:83)
at android.content.res.Resources.loadDrawable(Resources.java:2003)
at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:324)
at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
at android.view.View.<init>(View.java:3414)
at android.view.View.<init>(View.java:3343)
at android.view.ViewGroup.<init>(ViewGroup.java:538)
at android.widget.RelativeLayout.<init>(RelativeLayout.java:210)

… 24 more

第一種情況就是佈局圖片過大引起的記憶體溢位。

比如"android:background="@drawable/welcome_bacgroud",

android:src="@drawable/loader_frame_1"設定的圖片記憶體過過於大可能就會引起記憶體溢位的可能。

解決方案:對圖片儘可能的進行壓縮。