0

在我的应用程序中,我有很多通过按钮从一个和另一个跳转的活动。我想确保当用户单击按钮离开该活动时,该活动不会在后台运行,从而减慢应用程序的速度。所以我想解决这个问题的方法是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

4 回答 4

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();
}

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

于 2013-11-03T01:37:10.613 回答
2

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

//start new activity
Intent i = new Intent(HomeActivity.this, activity1.class);
startActivity(i);
//kill current activity
finish();
于 2013-11-03T01:41:53.963 回答
0

当您不需要活动时,在活动开始后调用活动方法完成()。启动活动后,它将杀死当前的活动。

于 2013-11-03T01:41:06.303 回答
0

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

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

于 2013-11-03T02:17:48.813 回答