मुझे गैलेक्सी नेक्सस मिल गया है, और मुझे पता है कि android:largeHeap="true"
मैनिफेस्ट विकल्प इस फोन पर काम करता है, लेकिन मैं सोच रहा था कि क्या यह पुराने फोन पर काम कर रहा है, जिसे आइसक्रीम सैंडविच में अपग्रेड किया जा रहा है, यानी सैमसंग नेक्सस एसक्या एंड्रॉइड का बड़ा ढेर विकल्प पुराने फोन के लिए आईसीएस में अपग्रेड किया गया है?
कारण मैं पूछ रहा हूं कि मैंने एक ऐसा एप्लिकेशन बनाया है जो बड़े बिटमैप्स का भारी उपयोग करता है और एप्लिकेशन को मूल रूप से 48 एमबी ढेर आकार वाले टैबलेट के लिए डिज़ाइन किया गया था। गैलेक्सी नेक्सस में प्रत्येक एप्लिकेशन के लिए उपलब्ध 48 एमबी उपलब्ध ढेर आकार भी है, इसलिए मेरा एप्लिकेशन टैबलेट नहीं होने के बावजूद इस फोन पर खूबसूरती से काम कर रहा है।
समस्या यह है कि नेक्सस एस में केवल 32 एमबी ढेर उपलब्ध है, इसलिए मुझे आईसीएस के साथ इन पुराने फोन पर काम करने के लिए एप्लिकेशन के लिए बड़े ढेर विकल्प की ज़रूरत है।
मेरा प्रश्न: क्या android:largeHeap
विकल्प अभी भी उपलब्ध ढेर मेमोरी को बढ़ाता है? अर्थात। यदि नेक्सस एस में डिफ़ॉल्ट रूप से 32 एमबी है, तो क्या मैं इसका उपयोग करके उपलब्ध 64 एमबी तक पहुंचने में सक्षम हूं?
आप में से उन लोगों के लिए जो इस विकल्प से अपरिचित हैं, इससे कम प्रदर्शन की लागत पर आपके आवेदन के लिए उपलब्ध ढेर मेमोरी की मात्रा बढ़ जाती है। इसका उपयोग तब किया जाना चाहिए जब कोई अन्य विकल्प न हो।
अद्यतन
यहाँ अपने उपलब्ध ढेर आकार को दिखाने के लिए आवेदन पैकेज है: http://michellbak.dk/TestHeapSize.apk
स्रोत कोड हानिकारक कोई बात नहीं है कि आप को दिखाने के लिए नीचे है:
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);
}
}
प्रकट फ़ाइल:
<?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>
यदि आप उस ऐप को चाबुक करते हैं जो आपके इच्छित जानकारी को डंप करता है और स्रोत कोड प्रकाशित करता है, तो मैं इसे आपके लिए नेक्सस एस चल रहा आईसीएस पर चलाऊंगा। – CommonsWare
धन्यवाद, मैं सिर्फ एक छोटा ऐप लिखूंगा जो तब उपलब्ध ढेर मेमोरी की मात्रा दिखाता है। मैं थोड़ी देर में टिप्पणियों में एक लिंक पोस्ट करूंगा। –
कृपया मेरे अपडेट किए गए प्रश्न को स्रोत कोड और एपीके के साथ देखें। –