Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中释放堆内存_Java_Android - Fatal编程技术网

Java 如何在android中释放堆内存

Java 如何在android中释放堆内存,java,android,Java,Android,我想开发一个列表视图,其中包含一个图像和一个文本视图。这段代码完成了 很好,但我的代码分配了大量堆内存,但并没有释放内存。 我初始化了ondestroy中的所有空值,但它对我没有任何作用 帮助我任何一个人,我被困在这个 public class EventsActivity extends Activity implements OnClickListener { private ListView mListview; private EventsAdapter adapter; Initial

我想开发一个列表视图,其中包含一个图像和一个文本视图。这段代码完成了
很好,但我的代码分配了大量堆内存,但并没有释放内存。 我初始化了ondestroy中的所有空值,但它对我没有任何作用

帮助我任何一个人,我被困在这个

public class EventsActivity extends Activity implements OnClickListener {
private ListView mListview;
private EventsAdapter adapter;
InitialRequestResponseDto mInitialRequestResponseDto;
Context mContext;
private ImageButton mPlayButton;
//private ImageButton mRepeatButton;
private ImageButton mNextButton;
private ImageButton mPreviousButton;
//private ImageButton mStopButton;
TextView title, descrip;
ImageView songIcon;
boolean mBroadcastIsRegistered;
Intent intent, serIntent;
static ProgressDialog mdialog;
LazyImageLoader lazyImageLoader;
private static int songEnded = 0;
private TextView mHeading;
final String SUGGESTED_URL = "http://www.vorbis.com/music/Epoq-Lepidoptera.ogg";
RelativeLayout mRelativeLayout;
private ImageButton mHome;
private ImageButton mFm;
private String langid;
private ImageView mArrow;
Typeface tf,tf2;
private Button mBack;
String mRprgmname;
private TextView mPrgmTxtVw;
private TextView mPrgmName;

private RelativeLayout mrelative;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = this;
    setContentView(R.layout.commonsongslist);
    mrelative = (RelativeLayout) findViewById(R.id.Rlplayall);
    title = (TextView) findViewById(R.id.songnamemaint);
    songIcon = (ImageView) findViewById(R.id.cntrylogo);
    mPrgmTxtVw = (TextView) findViewById(R.id.prmnametxt);
    mPrgmName = (TextView) findViewById(R.id.prmname);
    mBack = (Button) findViewById(R.id.backs);
    mHome = (ImageButton) findViewById(R.id.home);
    mRelativeLayout = (RelativeLayout) findViewById(R.id.commonlayout);
    mRelativeLayout.setBackgroundColor(Color.rgb(234, 183, 51));
    mListview = (ListView) findViewById(R.id.listsongs);
    mHeading = (TextView) findViewById(R.id.txtheading);
    mPlayButton = (ImageButton) findViewById(R.id.btnPlay);
    mNextButton = (ImageButton) findViewById(R.id.nextbtn);
    mPreviousButton = (ImageButton) findViewById(R.id.prvsbtn);
    mArrow = (ImageView) findViewById(R.id.arrowimage);
    mArrow.setImageResource(R.drawable.events_a);
    mFm = (ImageButton) findViewById(R.id.fmbtn);
    Intent intent = getIntent();
    langid = intent.getStringExtra("languageid");
    lazyImageLoader = new LazyImageLoader(mContext);
    mHeading.setText("Events");
    DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
    // mHeading.setTextSize(20/ metrics.scaledDensity);
    if (metrics.scaledDensity < 1) {
        mHeading.setTextSize(16);
    } else if (metrics.scaledDensity >= 2) {
        mHeading.setTextSize(16);
    } else if (metrics.scaledDensity >= 1 && metrics.scaledDensity < 2) {
        mHeading.setTextSize(18 / metrics.scaledDensity);
    }
    Typeface tf = Typeface.createFromAsset(this.getAssets(),
            "fonts/Oswald-Bold.ttf");
    mHeading.setTypeface(tf);
    Typeface tf2 = Typeface.createFromAsset(this.getAssets(),
            "fonts/arial.ttf");
    mBack.setTypeface(tf2);
    mBack.setBackgroundResource(R.drawable.events_back);
    mRprgmname = getIntent().getStringExtra("name");

    if (Utills.isNetworkAvailable(mContext)) {

        mPlayButton.setOnClickListener(this);
        mNextButton.setOnClickListener(this);
        mPreviousButton.setOnClickListener(this);
    }
    mBack.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            onBackPressed();
        }
    });
    mHome.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            LanguagesGetAsnchTask task = new LanguagesGetAsnchTask(
                    mContext, Constants.LANGUAGE_URL);
            task.execute();
        }
    });
    mFm.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
    RadioAsynchTask   
     task=newRadioAsynchTask(mContext,Constants.channels,Constants.LANGUAGE_URL, langid,
                    mRprgmname);
            task.execute();
        }
    });
    mInitialRequestResponseDto = (InitialRequestResponseDto) getIntent()
            .getSerializableExtra("events");
    adapter = new EventsAdapter(this, 1, mInitialRequestResponseDto
            .getInitialResposeBean().getEvevtsdto());
    mListview.setAdapter(adapter);
    mListview.invalidate();
    mListview.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
                long arg3) {
            String title = mInitialRequestResponseDto
                .getInitialResposeBean().getEvevtsdto().get(pos)
                    .getEvent_title();
            String image = mInitialRequestResponseDto


                      .getInitialResposeBean().getEvevtsdto().get(pos)
                    .getEvent_poster();
            String desc = mInitialRequestResponseDto

                          .getInitialResposeBean().getEvevtsdto().get(pos)
                    .getLong_desc();
            Intent intent = new Intent(mContext, DetailedEvents.class);
            intent.putExtra("image_path", image);
            intent.putExtra("languageid", langid);
            intent.putExtra("description", desc);
            intent.putExtra("eventtitle", title);
            intent.putExtra("name", mRprgmname);
            startActivity(intent);

        }
    });
}

private void updateUi(Intent serviceIntent) {
    if (songEnded == 1) {
        mPlayButton.setImageResource(R.drawable.play);
        updateUI();
    }
}

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent serviceIntent) {
        EventsActivity.this.serIntent = serviceIntent;
        if (serviceIntent.getAction().equalsIgnoreCase(
                MusicService.ACTION_STATE_CHANGED)) {
            updateUI();
        }
        if (serviceIntent.getAction().equalsIgnoreCase(
                MusicService.BROADCAST_ACTION)) {
            updateUi(serviceIntent);
        }

        if (serviceIntent.getAction().equalsIgnoreCase(
                MusicService.BROADCAST_BUFFER)) {
            Toast.makeText(context, "Buffering",   
                     Toast.LENGTH_LONG).show();

        }

    }

};

private void updateUI() {

    RadioDto songItem = MusicHolder.getInstance().getCurrentItem();
    State mState = MusicHolder.getInstance().getState();
    if (mState == State.Playing) {
        mPlayButton.setImageResource(R.drawable.pause);
    } else if (mState == State.Paused || mState == State.Stopped) {
        mPlayButton.setImageResource(R.drawable.play);

    }

    if (songItem != null) {
        title.setSelected(true);
        title.setText(songItem.getTitle());
        title.setTypeface(tf2);
        title.setTextColor(Color.rgb(234, 183, 51));
        if (AMP.isAlbumname()) {
            mPrgmTxtVw.setText("Album Name:");
        } else {
            mPrgmTxtVw.setText("Program Name:");
        }
        if (mRprgmname != null) {
            mPrgmName.setText(mRprgmname);
        } else {
            mPrgmName.setText(" ");
        }
        mPrgmName.setSelected(true);
        mPrgmName.setTypeface(tf2);
        mPrgmTxtVw.setTypeface(tf2);
        DisplayMetrics metrics = mContext.getResources()
                .getDisplayMetrics();
        if (metrics.scaledDensity < 1) {
            title.setTextSize(16);
            mPrgmTxtVw.setTextSize(14);
            mPrgmName.setTextSize(14);
        } else if (metrics.scaledDensity >= 2) {
            title.setTextSize(16);
            mPrgmTxtVw.setTextSize(14);
            mPrgmName.setTextSize(14);
            RelativeLayout.LayoutParams params = 
                    (RelativeLayout.LayoutParams) mrelative
                    .getLayoutParams();
            params.setMargins(0, 0, 0, 90); // left, top, right, bottom
            mrelative.setLayoutParams(params);
        } else if (metrics.scaledDensity >= 1 && metrics.scaledDensity < 2)    
            {
            title.setTextSize(18 / metrics.scaledDensity);
            mPrgmName.setTextSize(16 / metrics.scaledDensity);
            mPrgmTxtVw.setTextSize(16 / metrics.scaledDensity);
        }
        if (songItem.getImage() != null) {
            final String url = songItem.getImage();
            songIcon.setTag(url);
            Thread Moviesthread3 = new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                Bitmap bitmap = Utills.getBitmapFromURL(url);
                    bitmap = Utills.getCircularBitmap(bitmap);
                        songIcon.setImageBitmap(bitmap);
                        bitmap.recycle();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            Moviesthread3.start();
            songIcon.invalidate();
        }

    } else {
        title.setText("Radio Khushi");
        // descrip.setText("select song from playlist");
    }
}

protected void onResume() {
    super.onResume();
    boolean dia = false;
    registerReceiver(broadcastReceiver, new IntentFilter(
            MusicService.ACTION_STATE_CHANGED));
    registerReceiver(broadcastReceiver, new IntentFilter(
            MusicService.BROADCAST_ACTION));
    registerReceiver(broadcastReceiver, new IntentFilter(
            MusicService.BROADCAST_BUFFER));

    mBroadcastIsRegistered = true;

    if (songEnded == 1) {
        mPlayButton.setImageResource(R.drawable.play);
    }

    updateUI();

}

@Override
protected void onPause() {
    super.onPause();
    if (mBroadcastIsRegistered) {
        try {
            unregisterReceiver(broadcastReceiver);
            mBroadcastIsRegistered = false;
        } catch (Exception e) {

            e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                e.getClass().getName() + " " + e.getMessage(),

                    Toast.LENGTH_LONG).show();
        }
    }
}

public void onClick(View target) {
    MusicHolder musicHolder = MusicHolder.getInstance();
    final State mState = musicHolder.getState();
    if (musicHolder.getItems().size() != 0) {
        Intent intent = new Intent(this, MusicService.class);

        if (target == mPlayButton) {
            if (mState == State.Playing && mState != State.Preparing
                    && mState != State.Retrieving) {
                intent.setAction(MusicService.ACTION_PAUSE);
                startService(intent);
        } else if (mState == State.Paused || mState == State.Stopped) {
                intent.setAction(MusicService.ACTION_PLAY);
                startService(intent);
            }
        } else if (target == mNextButton) {

            intent.setAction(MusicService.ACTION_SKIP);
            mNextButton.setBackgroundResource(R.drawable.next_pressed);

            startService(intent);
            String time = "";
            int index = musicHolder.getIndex();
        InitialRequestResponseDto mInitialRequestResponseDto1 = null;

            InitialResposeBean ini = new InitialResposeBean();
            ini.setRadiolist(musicHolder.getItems());
        mInitialRequestResponseDto1 = new InitialRequestResponseDto();
            mInitialRequestResponseDto1.setInitialResposeBean(ini);
            index++;
            if (index == mInitialRequestResponseDto1
                .getInitialResposeBean().getRadiolist().size()) {
                index = 0;
            }
            time = mInitialRequestResponseDto1.getInitialResposeBean()
                    .getRadiolist().get(index).getTime_zone();
            String[] s = time.split(" ");
            TimeZone tz = TimeZone.getTimeZone("GMT" + s[0] + s[1]);
            Calendar c = Calendar.getInstance(tz);
            String caltime = c.get(Calendar.HOUR_OF_DAY) + "."
                    + c.get(Calendar.MINUTE);

            mRprgmname = Utills.getpname1(mInitialRequestResponseDto1,
                    index, caltime, Utills.getdayofweek());

        } else if (target == mPreviousButton) {
            intent.setAction(MusicService.ACTION_REWIND);
        mPreviousButton.setBackgroundResource(R.drawable.prev_pressed);

            startService(intent);
            String time = "";
        InitialRequestResponseDto mInitialRequestResponseDto1 = null;
            int index = musicHolder.getIndex();

            InitialResposeBean ini = new InitialResposeBean();
            ini.setRadiolist(musicHolder.getItems());
        mInitialRequestResponseDto1 = new InitialRequestResponseDto();
            mInitialRequestResponseDto1.setInitialResposeBean(ini);

            index--;
            if (index == -1) {
            index = mInitialRequestResponseDto1.getInitialResposeBean()
                        .getRadiolist().size() - 1;
            }
            time = mInitialRequestResponseDto1.getInitialResposeBean()
                    .getRadiolist().get(index).getTime_zone();

            String[] s = time.split(" ");
            TimeZone tz = TimeZone.getTimeZone("GMT" + s[0] + s[1]);

            Calendar c = Calendar.getInstance(tz);

            String caltime = c.get(Calendar.HOUR_OF_DAY) + "."
                    + c.get(Calendar.MINUTE);

            mRprgmname = Utills.getpname1(mInitialRequestResponseDto1,
                    index, caltime, Utills.getdayofweek());
        }
    } else {
        Toast.makeText(mContext, "No Song In Holder", Toast.LENGTH_LONG)
                .show();
    }
    if (mState == State.Stopped) {
        Toast.makeText(mContext, "No Song In Holder", Toast.LENGTH_LONG)
                .show();
    }
}

protected void onDestroy() {
    super.onDestroy();
    Toast.makeText(mContext, "events ondestroy", Toast.LENGTH_SHORT).show();
    mrelative=null;mPrgmName=null;mPrgmTxtVw=null;
    mBack=null;
    tf=null;
    tf2=null;
    mArrow=null;
    mFm=null;
    mHome=null;
    mRelativeLayout=null;
    mHeading=null;
    lazyImageLoader=null;
    mdialog=null;
    intent=null;
    serIntent=null;
    songIcon=null;
    title=null;
    descrip=null;
    mPreviousButton=null;
    mNextButton=null;
    mPlayButton=null;
    mContext=null;
    mInitialRequestResponseDto=null;
    adapter=null;
    mListview=null;
    System.gc();
}
公共类事件活动扩展活动实现OnClickListener{
私有列表视图;
私有事件适配器;
InitialRequestResponsedToMinitialRequestResponsedTo;
语境;
私人图像按钮;
//私有图像按钮mRepeatButton;
私有图像按钮mnext按钮;
私有图像按钮MPPreviousButton;
//私有图像按钮mStopButton;
文本视图标题,描述;
图像视图图标;
布尔mBroadcastIsRegistered;
意图,严重性;
静态进程对话框mdialog;
LazyImageLoader LazyImageLoader;
私有静态int=0;
私有文本视图阅读;
建议的最后一个字符串\u URL=”http://www.vorbis.com/music/Epoq-Lepidoptera.ogg";
相对布局;
私有图像按钮mHome;
专用图像按钮mFm;
私有字符串langid;
私人影像;
字体tf,tf2;
私用钮扣;
字符串mRprgmname;
私有文本视图mPrgmTxtVw;
私有文本视图mPrgmName;
私人关系;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mContext=这个;
setContentView(R.layout.commonsongslist);
mrrelative=(RelativeLayout)findViewById(R.id.Rlplayall);
title=(TextView)findViewById(R.id.songnamemaint);
songIcon=(ImageView)findViewById(R.id.cntrylogo);
mPrgmTxtVw=(TextView)findviewbyd(R.id.prmnametxt);
mPrgmName=(TextView)findViewById(R.id.prmname);
mBack=(按钮)findViewById(R.id.backs);
mHome=(ImageButton)findViewById(R.id.home);
mrrelativelayout=(RelativeLayout)findViewById(R.id.commonlayout);
mrrelativelayout.setBackgroundColor(Color.rgb(234183,51));
mListview=(ListView)findViewById(R.id.listsongs);
mHeading=(TextView)findViewById(R.id.txtheading);
mPlayButton=(ImageButton)findViewById(R.id.btnPlay);
mNextButton=(ImageButton)findViewById(R.id.nextbtn);
mPreviousButton=(ImageButton)findViewById(R.id.prvsbtn);
骨髓=(ImageView)findViewById(R.id.arrowimage);
setImageResource(R.drawable.events_a);
mFm=(图像按钮)findViewById(R.id.fmbtn);
Intent=getIntent();
langid=intent.getStringExtra(“languageid”);
lazyImageLoader=新的lazyImageLoader(mContext);
mHeading.setText(“事件”);
DisplayMetrics metrics=mContext.getResources().getDisplayMetrics();
//mHeading.setTextSize(20/量度,标度密度);
如果(度量值。标度密度<1){
mHeading.SettexSize(16);
}否则如果(metrics.scaledDensity>=2){
mHeading.SettexSize(16);
}否则如果(metrics.scaledDensity>=1&&metrics.scaledDensity<2){
mHeading.setTextSize(18/量度,标度密度);
}
Typeface tf=Typeface.createFromAsset(this.getAssets(),
“字体/Oswald Bold.ttf”);
mHeading.setTypeface(tf);
Typeface tf2=Typeface.createFromAsset(this.getAssets(),
“字体/arial.ttf”);
mBack.setTypeface(tf2);
mBack.setBackgroundResource(R.drawable.events_back);
mRprgmname=getIntent().getStringExtra(“名称”);
if(Utills.isNetworkAvailable(mContext)){
mPlayButton.setOnClickListener(此);
mNextButton.setOnClickListener(此);
mpPreviousButton.setOnClickListener(此);
}
mBack.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
onBackPressed();
}
});
mHome.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
LanguagesGetAsnchTask任务=新语言GetAsnChTask(
mContext,Constants.LANGUAGE_URL);
task.execute();
}
});
setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
无线电异步任务
task=newRadioAsynchTask(mContext、常数.通道、常数.语言\u URL、langid、,
mRprgmname);
task.execute();
}
});
MinitialRequestResponseTo=(InitialRequestResponseTo)getIntent()
.getSerializableExtra(“事件”);
适配器=新事件适配器(此,1,mInitialRequestResponseDto
.getInitialResposeBean().getEvitSdto());
mListview.setAdapter(适配器);
mListview.invalidate();
setOnItemClickListener(新的OnItemClickListener(){
公共链接(适配器视图arg0、视图arg1、内部位置、,
长arg3){
String title=mInitialRequestResponseDto
.getInitialResposeBean().GetEvitSdto().get(pos)
.getEvent_title();
字符串image=mInitialRequestResponseDto
.getInitialResposeBean().GetEvitSdto().get(pos)
.getEvent_poster();
String desc=mInitialRequestResponseDto
.getInitialResposeBean().GetEvitSdto().get(pos)
.getLong_desc();
意向意向=新意向(mContext,DetailedEvents.class);
intent.putExtra(“图像路径”,图像);
intent.putExtra(“languageid”,langid);
意图。额外(“说明”,描述);
意向。额外(“事件标题”,标题);
意图。putExtra(“名称”,mRprgmname);
星触觉(意向);
}
});
}
私有无效更新(意图服务意图){
如果(结束==1){
mPlayButton.setImageResource(R.drawable.play);
updateUI();
}
}
private BroadcastReceiver BroadcastReceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文上下文、意图serviceIntent){
EventsActivity.this.serIntent=servic
 package com.onlineradio.adapters;

 import java.util.List;

 import android.content.Context;
 import android.graphics.Typeface;
 import android.util.DisplayMetrics;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;

 import com.onlineradio.Utils.LazyImageLoader;
 import com.onlineradio.dto.EventsDto;
 import com.siriinnovations.radiokhushi.R;

 public class EventsAdapter extends ArrayAdapter<EventsDto> {
Context mContext;
EventsDto category;
public LazyImageLoader lazyImageLoader;
List<EventsDto> categories;
int selectedLanguage;

public EventsAdapter(Context context, int textViewResourceId,
        List<EventsDto> list) {
    super(context, textViewResourceId, list);
    this.categories = list;
    this.mContext = context;
    lazyImageLoader = new LazyImageLoader(mContext.getApplicationContext());
}

@Override
public int getCount() {
    return categories.size();
}

public EventsDto getItem(int position) {
    return super.getItem(position);
}

@Override
public long getItemId(int position) {
    return position;
}

public static class ViewHolder {
    public TextView mEvntName;
    public ImageView mImage;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View vi = convertView;
    ViewHolder holder;
    category = getItem(position);
    // if (convertView == null) {
    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    vi = inflater.inflate(R.layout.event_row, parent, false);
    holder = new ViewHolder();
    holder.mEvntName = (TextView) vi.findViewById(R.id.eventname);
    holder.mImage = (ImageView) vi.findViewById(R.id.eventimage);
    vi.setTag(holder);
    // } else {
    // holder = (ViewHolder) vi.getTag();
    // }
    String title = categories.get(position).getEvent_title();
    holder.mEvntName.setText(title);
    Typeface tf = Typeface.createFromAsset(mContext.getAssets(),
            "fonts/arial.ttf");
    holder.mEvntName.setTypeface(tf);
    DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
    // holder.mEvntName.setTextSize(15 / metrics.scaledDensity);
    if (metrics.scaledDensity < 1) {
        holder.mEvntName.setTextSize(16);
    } else if (metrics.scaledDensity >= 2) {
        holder.mEvntName.setTextSize(14);
    } else if (metrics.scaledDensity >= 1 && metrics.scaledDensity < 2) {
        holder.mEvntName.setTextSize(18 / metrics.scaledDensity);
    }
    String imageurl = categories.get(position).getEvent_poster();
    // holder.mImage.setImageBitmap(Utills.getBitmapFromURL(imageurl));
    // new DownloadImageTask((ImageView) vi.findViewById(R.id.eventimage))
    // .execute(imageurl);

    // if ((imageurl == null) || imageurl.equalsIgnoreCase("null")) {
    // holder.mImage.setVisibility(ImageView.GONE);
    //
    // } else {
    lazyImageLoader.displayImage(imageurl, holder.mImage,
            R.drawable.ic_launcher);

    // holder.mImage.setLayoutParams(new ViewGroup.LayoutParams(
    // WindowManager.LayoutParams.MATC`enter code here`H_PARENT,
    // WindowManager.LayoutParams.WRAP_CONTENT));
    // holder.mImage.setImageBitmap(Utills.getBitmapFromURL(imageurl));
    holder.mImage.setTag(imageurl);
    // holder.mImage.invalidate();
    return vi;
}

 }