onPause方法实际上是否会杀死活动?

时间:2014-04-30 16:08:30

标签: java android

我的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();

2 个答案:

答案 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 LifecycleAndroid Activity Lifecycle

至于你的问题,你应该在你的问题中显示的onPause()中静音或停止你的音乐。你应该让Android自己处理内存管理,它非常擅长。只要您处理finish()中的声音(或适合您的设计的任何地方),就无需手动调用onPause()