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>