我就在構建應用程序的開始(這甚至不執行任何操作,但會顯示一些按鈕),當我運行它,我得到了logcat中的錯誤信息: 「從字體緩存[23條目]」一遍又一遍地提供193K,直到大約一分鐘後,由於內存不足導致應用程序崩潰。我的3個按鈕是自定義按鈕,使用自定義字體。字體也許有問題?應用不斷「清洗從字體緩存」,並最終崩潰由於內存不足,Android的
回答
我已經能夠通過聲明字樣的活動課中的靜態大幅度減少這種Skia的消息(和最終的內存不足情況)。
即
public class myActivity extends Activity
{
//font
private static Typeface mFontHelvet;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
if (mFontHelvet == null)
{
mFontHelvet = Typeface.createFromAsset(this.getAssets(), "Helvetica.TTF");
}
myTextView = (TextView) findViewById(R.id.mytextview);
myTextView.setTypeface(mFontHelvet);
myTextView.setText("blah blah");
}
}
這似乎風險很大,但至少用戶可以來回走我的兩個活動之間沒有進入低內存狀態!
你可以移動到這個擴展應用程序的類,有一個'getHelvet();這樣它永遠只能加載每個應用程序運行一次,而不是在創建活動每次'方法。 – Blundell 2012-03-18 22:32:12
@Blundell能否請你提供你正在推薦的樣品。我有我在我的應用程序中使用自定義字體的相同情況。但是我把它放在我的代碼中的每一個活動中。所以這些活動緩慢加載。 – 2012-08-15 11:15:20
jeraldov - 請參閱本教程以「擴展應用程序」:http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/ – 2012-08-17 06:17:55
問題是調用Typeface.createFromAsset()。
我已經減少了創建字體出廠,所以它調用Typeface.createFromAsset()每個字體類型一次。
字體工廠擁有一個HashMap中的字體,並且做的伎倆。
我發現這個鏈接上的解決方案,並調整了一點點:
http://www.levinotik.com/2011/09/22/custom-fonts-in-android-can-cause-issues-heres-how-to-fix-it/
這是怎麼了,我實現它。
public class FontFactory {
private static FontFactory instance = new FontFactory();
private HashMap<String, Typeface> fontMap = new HashMap<String, Typeface>();
private FontFactory() {
}
public static FontFactory getInstance() {
return instance;
}
public Typeface getFont(String font) {
Typeface typeface = fontMap.get(font);
if (typeface == null) {
typeface = Typeface.createFromAsset(MyApplication.getApplicationContext().getResources().getAssets(), "fonts/" + font);
fontMap.put(font, typeface);
}
return typeface;
}
}
- 1. Android應用崩潰:內存不足?
- 2. 由於內存不足導致應用程序崩潰
- 3. 由於內存不足導致linux應用程序崩潰
- 4. 由於內存不足導致應用程序崩潰
- 5. 由於內存不足導致應用程序崩潰
- 6. 由於內存壓力,我的應用程序不斷崩潰
- 7. 應用程序崩潰,內存不足
- 8. iPhone應用程序內存問題。由於內存不足導致崩潰?
- 9. iPhone:內存不足崩潰
- 10. 內存不足崩潰iphone
- 11. Eclipse ADT內存不足並不斷崩潰?
- 12. android應用程序崩潰內存不足2457616字節分配
- 13. Phonegap android應用程序崩潰,由於內存不足打開相機
- 14. 由於運行Magento時內存不足導致mySQL崩潰
- 15. 應用崩潰由於內存泄漏
- 16. Android應用程序崩潰,內存不足
- 17. Android應用程序因內存不足而崩潰
- 18. 移動版Safari崩潰(內存不足)
- 19. 崩潰與「虛擬內存不足」
- 20. Android應用不斷崩潰
- 21. Android LRU緩存內存不足錯誤
- 22. 使用Gradle崩潰的Android項目內存不足錯誤
- 23. 內存不足的應用崩潰的陣營本地
- 24. 保存照片後Android不斷崩潰
- 25. iOS應用程序崩潰,內存不足警告
- 26. 幫助iOS應用崩潰與「內存不足」
- 27. Android內存崩潰
- 28. 由於內存使用率高,服務器不斷崩潰 - 實時IP監控?
- 29. Android:內存不足
- 30. Android內存不足
沒錯。我想我們需要更多關於你的字體的細節以及你如何使用它。 – 2011-03-09 20:22:15
我想我可能已經到底了。我在自定義按鈕的onDraw方法中設置了字體。它移動到構造函數和我沒有得到任何的問題更:) – 2011-03-09 20:40:06
我用Typeface.createFromAsset()內廣泛的onCreate()進行了一堆的TextView的(從XML膨脹),而我看到這個消息Skia的每一個活動。 this.finish() – 2011-06-27 18:30:13