2 zw0283 zw0283 于 2015.06.08 12:14 提问

android 使用自定义控件后,在模拟器上无限重启

如题。我自定义了一个title,作为公共的title,特别简单,代码如下

title的布局文件

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/title_layout"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@color/holo_blue_dark">

    <TextView
        android:id="@+id/text_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/title_text"
        android:textColor="@color/white"
        android:textSize="16sp"/>

    <TextView
            android:id="@+id/btn_title_right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="8dp"
            android:background="@drawable/btn_title_right_selector"
            android:textColor="@color/white"
            android:text="@string/today"
            android:textSize="12sp" 
            android:gravity="center"/>

</RelativeLayout>

title的实现类,只是加载,没有写响应呢

 package com.mensesrecord.base;

import com.zhengwei.mensesrecord.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.RelativeLayout;



package com.mensesrecord.base;

import com.zhengwei.mensesrecord.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.RelativeLayout;

public class BaseTitleLayout extends RelativeLayout{

public BaseTitleLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    LayoutInflater.from(context).inflate(R.layout.title_layout, this);
}

}


这是主布局


<?xml version="1.0" encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<com.mensesrecord.base.BaseTitleLayout
    android:id="@+id/title_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

主布局的实现类


package com.mensesrecord.activity;

import com.zhengwei.mensesrecord.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
}

}


在模拟器上点击app之后模拟器自动重启,这是错误代码
![图片说明](http://img.ask.csdn.net/upload/201506/08/1433736770_432811.png)

错误显示的是什么内存溢出,是不是和我写的欢迎页有关啊?我的欢迎页用了一个图片。。

4个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.08 13:21
已采纳

恩,看日志信息是图片加载导致的内存溢出。
1、如果能缩小图片尽量缩小
2、降低图片的质量,减小大小
3、看看下面处理手段你能不能用上
http://blog.csdn.net/huangbiao86/article/details/8072128

hikyson
hikyson   2015.06.08 13:31

1.降低图片分辨率
2.能用色块代替的地方都用色块
3.OOM很大程度上取决于你的编码习惯,要及时释放不需要的内存。

softwarenb
softwarenb   2015.06.08 19:41

编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常
OOM内存溢出解决方案:利用LruCache缓存技术可以解决
读完大牛这篇文章对你一定会有帮助http://blog.csdn.net/guolin_blog/article/details/9316683

u011133213
u011133213   2015.06.09 21:50

兄弟,你图片资源是不能直接这样加载进来的,每个app都有限制内存使用的上限,过了这个上限OOM之后就挂掉了!

Csdn user default icon
上传中...
上传图片
插入图片