我的APP中有2个活动,我想在打开第二个活动时杀掉第一个活动。
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (position < 6) {
String sentence = conversation[position];
frame.setText(sentence + "");
position++;
} else {
Intent intent = new Intent(Scene1.this,Scene2.class);
startActivity(intent);
finish():
我之前做过这个,正如代码所示,我在onClick方法中添加了finish()但是它不起作用。所以我搜索了一些信息并现在使用这个,这个实际上停止了音乐,但我不确定该活动是否实际被杀死,因为我希望第一个活动自杀。如果没有,有人可以告诉我该怎么做吗?提前谢谢。
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
bgm.release();
wovleshowling.release();
答案 0 :(得分:0)
finish()
实际上并没有在执行的同一时间内提交,只是告诉Android操作系统可以尽可能地释放它。致电finish()
会触发您的onDestroy()
方法,可能这是您在撰写onPause()
内容时未看到的内容。
onPause()
会被触发,例如,如果Activity
A来电Activity
B.这实际上会将您的Activity
A置于后台并触发onPause()
,它仍然留在内存中,但可能发生Android操作系统内存不足,并决定自己查杀Activity
A.在这种情况下,当结束Activity
B时,{{1} } Activity
将被调用而不是onCreate()
(根据活动的生命周期,它将触发onResume()
。)
答案 1 :(得分:0)
问题不在于finish()
没有触发onDestroy()
。您遇到的问题是,在达到startActivity(intent)
之前,第二个活动已创建并在finish()
时关注。
finish()
。如果Android决定通过停止您的第一项活动来释放一些资源,则可以调用onStop()
。在这种情况下,onRestart()
和onStart()
会在finsh()
被点击之前执行活动1的恢复,以触发以onPause()
开头并以onDestroy()
结尾的瀑布。
您应该熟悉Activity Lifecycle。
至于你的问题,你应该在你的问题中显示的onPause()
中静音或停止你的音乐。你应该让Android自己处理内存管理,它非常擅长。只要您处理finish()
中的声音(或适合您的设计的任何地方),就无需手动调用onPause()
。