【问题标题】:Activity flow in androidandroid中的活动流
【发布时间】:2016-12-02 09:11:25
【问题描述】:

对不起,如果之前有人问过这个问题。我想要做的是当应用程序启动时出现启动画面并在 3 秒后 My mainactivity 运行。但是当我按下后退按钮时,它会在启动屏幕上再次返回我。所以我的问题是如何控制活动的流程,使其不应该再次出现在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>

如果有很多活动并且我希望我的 mainactivity 是父活动,并且如果用户在父活动中并且用户按下回则不应该出现启动画面。有没有办法通过清单来做到这一点

【问题讨论】:

  • 完成你的活动
  • 在spash Activity中调用startActivity(intent)后调用this.finsh()

标签: android android-activity splash-screen intentfilter


【解决方案1】:

你必须完成 SplashActivity。

Intent i = new Intent(SplashActivity.this, MainActivity.class);
startActivity(i);
finish();

【讨论】:

    【解决方案2】:

    最简单的解决方案是:在 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>
    

    【讨论】:

    • android:noHistory="true" 这个属性会破坏我的启动画面活动吗?
    • 是的,当然。从另一个活动中按下后,它将不再可见。但每次启动应用时都会看到
    【解决方案3】:

    当您移动到主要活动时,只需完成您的启动活动。

                   // Start your app main activity
                    Intent i = new Intent(SplashScreen.this, MainActivity.class);
                    startActivity(i);
    
                    // close this activity
                    finish();
    

    【讨论】:

      【解决方案4】:

      在您显示完启动屏幕后立即输入finish(),然后按“返回”按钮将不会返回到您之前的活动。

      完成(): 当您的活动完成并应该关闭时调用它。 ActivityResult 会通过 onActivityResult() 传播回启动你的人。

      代码sn-p:

      Intent intent = new Intent(SplashActivity.this, MainActivity.class);
      startActivity(intent);
      finish();
      

      【讨论】:

        【解决方案5】:

        当你把你的Intent变成你的MainActivity,在startActivity(intent)之后,写finish();

        【讨论】:

          【解决方案6】:

          当您通过 Intent 遍历到 MainActivity 时,您的 SplashActivity 有:

          Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                    startActivity(intent);
                    finish();
          

          【讨论】:

            【解决方案7】:

            @FaisalAhmed

            在您的 mainActivity 覆盖方法 onBackPressed() 中完成您的活动。

            @Override
            public void onBackPressed() {
                this.finish();
            }
            

            【讨论】:

              【解决方案8】:

              在 SplashScreen 中重写方法 onStop:

              @Override
               public void onStop() {
                   finish();
                  }
              

              当您单击 MainAcyivity 中的后退按钮时,应用程序将退出。 此外,您可以在 onBackPressed MainActivity 上处理。

              【讨论】:

                【解决方案9】:
                @Override 
                public void onBackPressed() {
                    if (yourLayout.canGoBack()) {
                        yourlayout.goBack();
                    } 
                    else {
                        super.onBackPressed();
                    }
                }
                

                【讨论】:

                  【解决方案10】:

                  你可以这样做。:

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

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-05-02
                    • 2011-11-06
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多