第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

哪些Android工具和方法最適合查找內(nèi)存/資源泄漏?

哪些Android工具和方法最適合查找內(nèi)存/資源泄漏?

森林海 2019-08-03 03:03:26
哪些Android工具和方法最適合查找內(nèi)存/資源泄漏?我已經(jīng)開發(fā)了一個Android應(yīng)用程序,我的手機應(yīng)用程序開發(fā)的時候,一切看起來都很好,你想宣布勝利和出海,但你知道,那里必須有一些內(nèi)存和資源泄漏;在Android上只有1600萬b堆,而且它顯然很容易在Android應(yīng)用程序中泄漏。我一直在尋找,到目前為止,只能挖掘‘hprof’和‘traceview’的信息,沒有得到很多好評。您遇到或開發(fā)了哪些工具或方法,并希望在OS項目中共享這些工具或方法?
查看完整描述

3 回答

?
烙印99

TA貢獻1829條經(jīng)驗 獲得超13個贊

如果您只是使用位圖背景,那么@hp.android的答案很好,但是,在我的例子中,我有一個BaseAdapter提供一套ImageViewS代表aGridView..我修改了unbindDrawables()方法,以便條件是:

if (view instanceof ViewGroup && !(view instanceof AdapterView)) {
  ...}

但是問題是,遞歸方法從不處理AdapterView..為了解決這一問題,我做了以下工作:

if (view instanceof ViewGroup) {
  ViewGroup viewGroup = (ViewGroup) view;
  for (int i = 0; i < viewGroup.getChildCount(); i++)
    unbindDrawables(viewGroup.getChildAt(i));

  if (!(view instanceof AdapterView))
    viewGroup.removeAllViews();}

使孩子們AdapterView仍然被處理-該方法只是不嘗試刪除所有的子級(這是不支持的)。

然而,這并不能完全解決這個問題,因為ImageViewS管理一個不是他們背景的位圖。因此,我補充如下。這并不理想,但有效:

if (view instanceof ImageView) {
  ImageView imageView = (ImageView) view;
  imageView.setImageBitmap(null);}

總體上unbindDrawables()方法是:

private void unbindDrawables(View view) {
  if (view.getBackground() != null)
    view.getBackground().setCallback(null);

  if (view instanceof ImageView) {
    ImageView imageView = (ImageView) view;
    imageView.setImageBitmap(null);
  } else if (view instanceof ViewGroup) {
    ViewGroup viewGroup = (ViewGroup) view;
    for (int i = 0; i < viewGroup.getChildCount(); i++)
    unbindDrawables(viewGroup.getChildAt(i));

    if (!(view instanceof AdapterView))
      viewGroup.removeAllViews();
  }}

我希望有一個更有原則的方法來釋放這些資源。




查看完整回答
反對 回復(fù) 2019-08-05
  • 3 回答
  • 0 關(guān)注
  • 297 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號