Tôi có Galaxy Nexus chính mình và tôi biết rằng tùy chọn kê khai android:largeHeap="true"
hoạt động trên điện thoại này, nhưng tôi tự hỏi liệu nó có hoạt động trên các điện thoại cũ đang được nâng cấp lên Ice Cream Sandwich hay không, tức là Samsung Nexus S.Tùy chọn heap lớn của Android có hoạt động đối với các điện thoại cũ được nâng cấp lên ICS không?
Lý do tôi hỏi là tôi đã tạo ứng dụng sử dụng nhiều bitmap lớn và ứng dụng ban đầu được thiết kế cho máy tính bảng có kích thước heap là 48 MB. Galaxy Nexus cũng có 48 MB kích thước heap có sẵn cho mỗi ứng dụng, vì vậy ứng dụng của tôi đang hoạt động tốt trên điện thoại này mặc dù nó không phải là máy tính bảng.
Vấn đề là Nexus S chỉ có 32 MB đống, vì vậy tôi thực sự cần tùy chọn heap lớn để ứng dụng hoạt động trên các điện thoại cũ hơn với ICS.
Câu hỏi của tôi: Tùy chọn android:largeHeap
vẫn tăng bộ nhớ heap có sẵn không? I E. nếu Nexus S có 32 MB theo mặc định, tôi có thể truy cập perhap 64 MB khả dụng bằng cách sử dụng tính năng này không?
Đối với những người bạn không quen với tùy chọn này, nó tăng số lượng bộ nhớ heap có sẵn cho ứng dụng của bạn với chi phí hiệu suất thấp hơn. Nó chỉ nên được sử dụng khi không có lựa chọn thay thế khác.
Cập nhật
Đây là gói ứng dụng để hiển thị kích thước heap có sẵn của bạn: http://michellbak.dk/TestHeapSize.apk
Mã nguồn có dưới đây để cho bạn thấy rằng không có gì có hại là:
package com.miz.heapsize;
import android.app.Activity;
import android.app.ActivityManager;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActivityManager am = ((ActivityManager)getSystemService(Activity.ACTIVITY_SERVICE));
int memory = am.getMemoryClass();
int largeMemory = am.getLargeMemoryClass();
text = (TextView) findViewById(R.id.textView1);
text.setText("Normal heap size: " + memory + "\nLarge heap size: " + largeMemory);
}
}
Manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.miz.heapsize"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="11" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true" >
<activity
android:label="@string/app_name"
android:name=".MainActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Nếu bạn roi lên ứng dụng đổ thông tin bạn muốn và xuất bản mã nguồn, tôi sẽ chạy nó cho bạn trên Nexus S đang chạy ICS. – CommonsWare
Cảm ơn, tôi sẽ chỉ viết một ứng dụng nhỏ cho biết số lượng bộ nhớ heap có sẵn sau đó. Tôi sẽ đăng một liên kết trong các bình luận trong một thời gian ngắn. –
Vui lòng xem câu hỏi đã cập nhật của tôi với mã nguồn và apk. –