2011-12-30 11 views
14

मुझे गैलेक्सी नेक्सस मिल गया है, और मुझे पता है कि 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> 
+1

यदि आप उस ऐप को चाबुक करते हैं जो आपके इच्छित जानकारी को डंप करता है और स्रोत कोड प्रकाशित करता है, तो मैं इसे आपके लिए नेक्सस एस चल रहा आईसीएस पर चलाऊंगा। – CommonsWare

+0

धन्यवाद, मैं सिर्फ एक छोटा ऐप लिखूंगा जो तब उपलब्ध ढेर मेमोरी की मात्रा दिखाता है। मैं थोड़ी देर में टिप्पणियों में एक लिंक पोस्ट करूंगा। –

+1

कृपया मेरे अपडेट किए गए प्रश्न को स्रोत कोड और एपीके के साथ देखें। –

उत्तर

18

android:largeHeap विकल्प एंड्रॉइड 3.0 या उसके बाद वाले सभी डिवाइसों पर उपलब्ध है। इसमें ऐसे डिवाइस शामिल हैं जिन्हें आईसीएस में अपग्रेड किया गया है।

उस ने कहा, आपको 48 एमबी स्पेस प्राप्त करने की गारंटी नहीं है। अनुप्रयोगों को प्रदान किए गए सटीक ढेर आकार एक विकल्प डिवाइस निर्माता प्रति डिवाइस आधार पर सेट कर सकते हैं। सामान्य रूप से, बड़े डिस्प्ले वाले डिवाइस बड़े ढेर आकारों के साथ कॉन्फ़िगर किए जाएंगे।

+0

हाँ, नेक्सस एस डिफ़ॉल्ट रूप से आपको केवल 32 एमबी ढेर मेमोरी देगा, लेकिन 'एंड्रॉइड: bigHeap' विकल्प को उपलब्ध ढेर मेमोरी की मात्रा दोगुना करनी चाहिए, इसलिए मेरा सवाल यह है कि यह पुराने उपकरणों पर काम करता है या नहीं आईसीएस के लिए। –

+0

ध्वज काम करता है। उस ध्वज को सक्षम करके आपको क्या मिलेगा स्पष्ट रूप से परिभाषित नहीं किया गया है।;) @ कॉमन्सवेयर ने सुझाव दिया, चलो इसे आज़माएं और देखें कि क्या होता है! दुर्भाग्यवश मैंने कार्यालय में अपना नेक्सस एस छोड़ा, लेकिन अगर कोई इसे पहले नहीं ले जाता है तो मैं अगली बार जब मैं अंदर हूं तो कोशिश कर सकता हूं। –

+0

+1। धन्यवाद, ट्रेवर। बहुत सराहना की :) टिप्पणियों में मेरे प्रश्न का उत्तर दिया गया है, इसलिए मुझे आशा है कि आपको यह स्वीकार करने में कोई फर्क नहीं पड़ता कि अगर वह इसे उत्तर के रूप में जोड़ता है। यदि नहीं, तो मैं तुम्हारा स्वीकार करूंगा। चीयर्स! –

संबंधित मुद्दे