다른 언어 (영어, 타밀어 및 힌디어)로 응용 프로그램을 볼 수있는 옵션이 있습니다. 사용자가 원하는 언어에 따라 서체가 설정되는 customtextview를 사용했습니다.out of memory 예외 android
얼마 동안 응용 프로그램을 사용하면 메모리 부족 문제가 발생합니다. 애플리케이션의 모든 텍스트 뷰에 서체 설정에 직접적인 영향이 있습니까? 내 응용 프로그램이 잘 작동,
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): FATAL EXCEPTION: main
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.content.res.Resources.loadDrawable(Resources.java:1709)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.content.res.Resources.getDrawable(Resources.java:581)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2226)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2261)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:203)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.app.Activity.setContentView(Activity.java:1657)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at com.techjini.tvguide.android.activity.BaseActivity.setContentView(BaseActivity.java:94)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at com.techjini.tvguide.android.activity.ProgramNextAiringActivity.onCreate(ProgramNextAiringActivity.java:23)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.os.Handler.dispatchMessage(Handler.java:99)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.os.Looper.loop(Looper.java:130)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at android.app.ActivityThread.main(ActivityThread.java:3683)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at java.lang.reflect.Method.invokeNative(Native Method)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at java.lang.reflect.Method.invoke(Method.java:507)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-15 20:08:50.527: ERROR/AndroidRuntime(2731): at dalvik.system.NativeStart.main(Native Method)
현지화 기능없이와 충돌하지 않습니다
public L10nTextView(Context context, AttributeSet attrs) {
super(context, attrs);
this.ttfName = ttfFileName;
init();
}
private void init() {
if (ttfName != null) {
setTypeface(MyApplication.typeFace);
} else {
setTypeface(null);
}
}
오류 로그 :
는 텍스트 뷰를 확장하고 CustomTextView의 코드를 부착하게한다.base_layout.xml은 : 언어 내 응용 프로그램을 다시 변경 될 때
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/header_bar_layout" android:visibility="visible"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/header_bar" android:visibility="visible"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:id="@+id/header_click"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/before" android:layout_alignParentRight="true" />
<ProgressBar android:id="@+id/prg_bar"
android:layout_toLeftOf="@id/header_click" android:layout_width="25dip"
android:layout_height="25dip" android:layout_centerVertical="true"
android:visibility="gone" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/logo_layout" android:orientation="horizontal"
android:layout_alignParentLeft="true" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:visibility="visible">
<ImageView android:id="@+id/logo_bar"
android:layout_alignParentLeft="true" android:layout_height="wrap_content"
android:src="@drawable/logo_bar" android:layout_width="wrap_content" />
</LinearLayout>
<LinearLayout android:id="@+id/rating"
android:orientation="horizontal" android:layout_alignParentLeft="true"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:visibility="invisible">
<ImageView android:id="@+id/rate_us" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/rate_us" />
<ImageView android:id="@+id/like_us" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/fb_like_us" />
<ImageView android:id="@+id/follow_us"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/twitter_follow_us" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
나는 로케일을 설정하고있다. 그러나 메모리가 공개되지 않고 응용 프로그램이 열릴 때마다 메모리가 부족하여 결국 응용 프로그램이 중단 될 때만 증가합니다. 나는 또한 네이티브 힙 크기는 언어가 변경 될 때마다 증가에 유지하고, 마지막으로 응용 프로그램이 충돌 사실을 발견
public void setLocale(String languageLocaleToLoad) {
Locale locale = new Locale(languageLocaleToLoad);
Locale.setDefault(locale);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = locale;
getResources().updateConfiguration(config,
getResources().getDisplayMetrics());
}
:
로 setLocale 방법은 로케일을 변경합니다.
오류 로그를 게시 할 수 있습니까? – user370305
BaseActivity의 레이아웃이나 BaseActivity의 94 행에로드 된 레이아웃을 게시 할 수 있습니까? –
문제가 실제로 다른 곳, 즉 서체와 관련이 없다고 생각됩니다. 로켈 변경은 단순히 메모리 부족 문제를주의를 끌기 만합니다. 기억에 남은 것은 무엇입니까? DDMS를 사용하여 찾을 수 있습니다. –