Activity 流入 android
Activity flow in android
抱歉,如果之前有人问过这个问题。我想要做的是当应用程序启动时出现启动画面,并在 3 秒后我的 mainactivity
运行。但是当我按下后退按钮时,它 returns 我再次出现在初始屏幕上。所以我的问题是如何控制 activity 的流量,使其不会再次到达 splash screen
以下是我的
manifest file
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
</activity>
<activity android:name=".SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
如果有很多 activity 并且我希望我的 mainactivity 成为父 activity 并且如果用户在父 activity 上然后用户按下启动画面不应该出现。有没有办法通过 manifest
您必须完成 SplashActivity。
Intent i = new Intent(SplashActivity.this, MainActivity.class);
startActivity(i);
finish();
当您将 Intent
设为 MainActivity
时,在 startActivity(intent)
之后写入 finish();
你可以这样做。:
public class SplashActivity extends AppCompatActivity {
// Splash screen timer
private static final int SPLASH_TIME_OUT = 3000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashActivity.this, HomeMainActivity.class);
startActivity(i);
// close instance of this activity
this.finish();
}
}, SPLASH_TIME_OUT);
}}
当您通过意图遍历 MainActivity
完成您的 SplashActivity
时:
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
@FaisalAhmed
在您的 mainActivity 覆盖方法 onBackPressed()
中您完成 activity。
@Override
public void onBackPressed() {
this.finish();
}
在 SplashScreen 中覆盖 menthod onStop:
@Override
public void onStop() {
finish();
}
当您在 MainAcyivity 中单击后退按钮时,应用程序将退出。
此外,您可以在 menthod onBackPressed MainActivity 上处理。
@Override
public void onBackPressed() {
if (yourLayout.canGoBack()) {
yourlayout.goBack();
}
else {
super.onBackPressed();
}
}
当你移动到主要 activity 时,完成你的飞溅 activity。
// Start your app main activity
Intent i = new Intent(SplashScreen.this, MainActivity.class);
startActivity(i);
// close this activity
finish();
显示启动画面后立即输入 finish()
,然后在按返回按钮时它不会 return 到您之前的 activity。
finish ():
Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().
代码片段:
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
最简单的解决方案是:在manifest.xml
中设置android:noHistory="true"
<activity android:name=".SplashScreen"
android:noHistory="true"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
抱歉,如果之前有人问过这个问题。我想要做的是当应用程序启动时出现启动画面,并在 3 秒后我的 mainactivity
运行。但是当我按下后退按钮时,它 returns 我再次出现在初始屏幕上。所以我的问题是如何控制 activity 的流量,使其不会再次到达 splash screen
以下是我的
manifest file
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
</activity>
<activity android:name=".SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
如果有很多 activity 并且我希望我的 mainactivity 成为父 activity 并且如果用户在父 activity 上然后用户按下启动画面不应该出现。有没有办法通过 manifest
您必须完成 SplashActivity。
Intent i = new Intent(SplashActivity.this, MainActivity.class);
startActivity(i);
finish();
当您将 Intent
设为 MainActivity
时,在 startActivity(intent)
之后写入 finish();
你可以这样做。:
public class SplashActivity extends AppCompatActivity {
// Splash screen timer
private static final int SPLASH_TIME_OUT = 3000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashActivity.this, HomeMainActivity.class);
startActivity(i);
// close instance of this activity
this.finish();
}
}, SPLASH_TIME_OUT);
}}
当您通过意图遍历 MainActivity
完成您的 SplashActivity
时:
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
@FaisalAhmed
在您的 mainActivity 覆盖方法 onBackPressed()
中您完成 activity。
@Override
public void onBackPressed() {
this.finish();
}
在 SplashScreen 中覆盖 menthod onStop:
@Override
public void onStop() {
finish();
}
当您在 MainAcyivity 中单击后退按钮时,应用程序将退出。 此外,您可以在 menthod onBackPressed MainActivity 上处理。
@Override
public void onBackPressed() {
if (yourLayout.canGoBack()) {
yourlayout.goBack();
}
else {
super.onBackPressed();
}
}
当你移动到主要 activity 时,完成你的飞溅 activity。
// Start your app main activity
Intent i = new Intent(SplashScreen.this, MainActivity.class);
startActivity(i);
// close this activity
finish();
显示启动画面后立即输入 finish()
,然后在按返回按钮时它不会 return 到您之前的 activity。
finish (): Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().
代码片段:
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
最简单的解决方案是:在manifest.xml
中设置android:noHistory="true"<activity android:name=".SplashScreen"
android:noHistory="true"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>