我有两项活动。 1]闪屏 2] MainActivity
一旦启动屏幕任务移动到下一个MainActivity .. 但我的要求是..如果用户按下主页按钮或backPress。当用户再次恢复应用程序时,它应该以启动画面开始,而不是从MainActivity开始。
提前谢谢
答案 0 :(得分:2)
我看到这里的每个答案都说要覆盖onResume()
方法。这是一个坏主意。为什么?好吧,当你在MainActivity
并且接到电话时,你仍然可以在后台看到活动,因为它处于onPause()
状态。当您取消通话时,系统会调用onResume()
,然后调用SplashActivity
。这不是一个好的用户体验,也不是您可能想要的。
此外,在创建onResume()
期间会调用MainActivity
。因此,如果您将startActivity()
代码放在onResume()
中而不进行任何条件检查,那么您将永远不会看到MainActivity
。 <{1}}将在创建SplashActivity
时立即启动。
那么,如何实现你想要的呢?
从MainActivity
开始MainActivity
后,请不要SplashActivity
finish()
。让它保留在后堆栈中,因此当您按下后退按钮时,您将转到SplashActivity
。
在SplashActivity
的{{1}}方法中设置一个标记,指出onStop()
已最小化。然后在MainActivity
中检查此标志并仅在设置此标志时启动MainActivity
。这是为了确保应用程序最小化并且正在恢复。
<强> MainActivity 强>:
onStart()
答案 1 :(得分:1)
如果您在开始新活动之前没有完成活动,您将在返回时返回Splash活动。
覆盖OnResume并启动splash活动,以便在应用程序恢复时从启动时启动它。
@Override
protected void onResume() {
super.onResume();
startActivity(new Intent(this , SplashActivity.class));
finish();
}
就像这样...
答案 2 :(得分:1)
在ejes=findobj(get(gcf,'children'),'Type','axes','visible','on');
posicion=get(ejes,'pos');
tam=length(posicion);
for ii=1:tam
a=posicion{ii}(2);
vectorPos(ii)=a;
end
[valorMax,ind]=max(vectorPos); % min for choosing the phase plot
axes(ejes(ind))
AndroidManifest.xml文件的 intent-filter 中使用Home
作为类别
SplashScreen
意图使用Splash Screen
覆盖它们<intent-filter>
....
//-- this will show up your app when home button pressed (like laucher)
<category android:name="android.intent.category.HOME" />
</intent-filter>
的onResume
在进入运行状态@Override
public void onBackPressed() {
startActivity(new Intent(this , SplashActivity.class));
finish();
}
之前,根据this调用,所以如果你在OnResume
调用了一些其他活动,则当前甚至无法启动它将直接执行意图声明,
答案 3 :(得分:0)
在MainActivity中试用此代码
@Override
protected void onResume() {
super.onResume();
startActivity(new Intent(this , SplashActivity.class));
finish();
}
修改您可以在调用onResume
时第一次使用flag来检测
int flag = 0;
并将您的onResume代码更改为:
@Override
protected void onResume() {
super.onResume();
if(flag == 0) {
flag = 1 ;
}
else {
flag = 1 ;
startActivity(new Intent(this, SplashActivity.class));
finish();
}
}