活动放慢申请

时间:2013-11-03 01:32:00

标签: android

在我的应用程序中,我有很多活动可以通过按钮从一个和另一个跳转。我想确保当用户单击按钮离开该活动时,活动不会在后台运行,从而减慢应用程序的速度。所以我认为解决这个问题的方法是在活动的底部添加onStop,如下所示:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.homeactivity);

    btn1 = (Button)findViewById(R.id.button1);
    btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent i = new Intent(HomeActivity.this, activity.class);
            startActivity(i);

        }

    });

    btn2 = (Button)findViewById(R.id.button2);
    btn2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent i = new Intent(HomeActivity.this, activity1.class);
            startActivity(i);

        }

    });


}
    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
    }
}

我需要知道这个onStop是否真的阻止了活动在后台运行并降低了应用程序的速度。如果没有,有人可以协助我阻止活动在后台运行吗?

4 个答案:

答案 0 :(得分:3)

致电startActivity(i);后,请致电finish();,以确保您之前的活动被杀,并且不会占用更多资源。

此外,当您覆盖onStop()时,您没有在其中执行任何操作,因为您只是调用该函数的super方法。通常,如果要确保数据连续性,则会覆盖活动生命周期方法。例如,您有一个接受用户输入并希望保留它的应用程序,您可以覆盖onPause()onResume()方法来处理这些情况。您可以执行以下操作:接受输入并将其存储在SharedPreferences方法的onPause()中,并在调用onResume()方法时,从SharedPreferences获取这些值继续使用它们。

一个很好的例子是onCreate()覆盖。它是启动活动时调用的第一个函数。在您的onCreate()中,您通常会使用super方法,但是,您还有很多其他方法。实际上,您只需要onCreate()只能调用super函数,但这对您没有任何好处。在onCreate()函数中,您可以设置布局并分配Button值以及onClickListeners和布局上的其他小部件。

请记住,当您覆盖活动生命周期方法时,请在其中执行某些操作。

现在,如果您想要回到之前的活动(打开新活动的活动),请在第二项活动中执行此操作:

@Override 
protected void onBackPressed(){
    super.onBackPressed();        

    Intent intent = new Intent(this, ActivityOne.class);
    startActivity(intent);
    finish();
}

这将带您进行第一次活动并杀死第二次活动。

答案 1 :(得分:2)

如果你想停止并杀死当前活动,只需调用finish();在您下意图之后

//start new activity
Intent i = new Intent(HomeActivity.this, activity1.class);
startActivity(i);
//kill current activity
finish();

答案 2 :(得分:0)

当您不需要活动时,在活动开始后调用活动方法finish()。它会在启动活动后杀死当前的一个。

答案 3 :(得分:0)

请熟悉Android Activity Lifecycle。 Activity的基本前提是以这样的方式构建应用程序的代码,以便Android OS可以有效地管理它。例如,如果您启动的新活动是需要大量内存的游戏屏幕,Android会销毁您应用程序的所有先前活动,并在用户退出游戏活动时重建它们。

只要您的活动不进行后台线程处理或向处理程序发送频繁的消息,他们就会以任何方式降低设备速度。如上所述,由于操作系统可以随时删除当前不在前台的所有活动,因此您不应该首先使用它们做任何事情。