在我的应用程序中,我有很多活动可以通过按钮从一个和另一个跳转。我想确保当用户单击按钮离开该活动时,活动不会在后台运行,从而减慢应用程序的速度。所以我认为解决这个问题的方法是在活动的底部添加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
是否真的阻止了活动在后台运行并降低了应用程序的速度。如果没有,有人可以协助我阻止活动在后台运行吗?
答案 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会销毁您应用程序的所有先前活动,并在用户退出游戏活动时重建它们。
只要您的活动不进行后台线程处理或向处理程序发送频繁的消息,他们就会不以任何方式降低设备速度。如上所述,由于操作系统可以随时删除当前不在前台的所有活动,因此您不应该首先使用它们做任何事情。