gpt4 book ai didi

java - 启动 Activity 内存泄漏

转载 作者:行者123 更新时间:2023-12-01 12:42:38 27 4
gpt4 key购买 nike

我有一个名为 StartupActivity 的简单 Activity ,它在我的应用程序启动时播放,并以 Intent 打开 MainActivity。我注意到,如果我将 list 更改为直接打开 MainActivity,那么我的应用程序在 MainActivity 上使用 7mb 或更少的 RAM。我相信这是内存泄漏。我找不到它,有人可以帮我吗

 public class StartupActivity extends Activity {

private MediaManager mp;
private CountDownTimer time;
private boolean activityHasExited;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_startup);
activityHasExited=false;

mp = new MediaManager();
mp.playSoundClip(this,R.raw.intro);
//display the logo
time = new CountDownTimer(4000,1000){
@Override
public void onTick(long millisUntilFinished){
}

@Override
public void onFinish(){
if(!activityHasExited){
Intent i= new Intent(StartupActivity.this, MainActivity.class);
startActivity(i);
time=null;
StartupActivity.this.finish();
}
}
}.start();
}

@Override
public void onDestroy(){
super.onDestroy();

if(time!=null){
time.cancel();
time=null;
}
mp.stop();
activityHasExited=true;
}
}

支持类:

 //source: http://stackoverflow.com/questions/18254870/play-a-sound-from-res-raw
public class MediaManager {

private MediaPlayer mMediaPlayer;

public void stop() {
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}

public void playSoundClip(Context c, int rid) {
stop();

mMediaPlayer = MediaPlayer.create(c, rid);
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
stop();
}
});

mMediaPlayer.start();
}
}

编辑:通过将 onDestroy 更改为 onStop (根据ChallengeAccepted 或 Simon 的建议)如果用户在倒计时结束之前回家, Activity 就会完成,这很好!当我包含介绍 Activity 时,我仍然看到比不包含介绍 Activity 时更多的内存使用量。由于此 Activity 是一次性使用,我的目标是完全清理并保持我的应用程序尽可能精简。

最佳答案

这不是内存泄漏。如果您打开一个 Activity A,然后打开一个 Activity B,第一个 Activity 将继续保留在内存中,直到 Android 需要内存或 Android 认为该 Activity A 可能不会再次打开。此外,在您的情况下, Activity A 正在播放的内容会比平常的 Activity 消耗更多。

关于java - 启动 Activity 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24968525/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com