【问题标题】:After press back from splash screen app goes to previous open activity android从启动屏幕应用程序按下返回后,进入上一个打开的活动 android
【发布时间】:2021-05-28 08:21:19
【问题描述】:

在我的应用程序中,当用户通过单击“应用程序图标”打开应用程序然后通过此流程打开屏幕时

SplashActivity -> WelcomeActivity -> SignInActivity

当用户通过点击“一些链接”打开应用程序时,屏幕流程是

Splashactivity -> VideoActivity

当我通过点击“一些链接”打开应用程序时,屏幕流程与上面相同

Splashactivity -> VideoActivity

但是当我在这种情况下按下启动活动时,应用程序会转到“SignInActivity”而不是关闭应用程序

Splash、Welcome、视频活动的清单

//splash
 <activity
            android:name=".splash.SplashActivity"
            android:launchMode="singleTask"
            android:screenOrientation="portrait">
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <data
                    android:host="tinyurl.com"
                    android:scheme="https" />

                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
</activity>

//video
<activity
            android:name=".videocall.ui.VideoActivity"
            android:screenOrientation="portrait" />


//welcome
<activity
            android:name=".videocall.ui.WelcomeActivity"
            android:screenOrientation="portrait" />


//SignIn
<activity
            android:name=".videocall.ui.SignInActivity"
            android:screenOrientation="portrait" />

我通过这个从初始屏幕打开欢迎活动

 val intent = Intent(this@SplashActivity, WelcomeActivity::class.java)
                    intent.flags = intent.flags or Intent.FLAG_ACTIVITY_NO_HISTORY
                    startActivity(intent)
                    finish()

所以,如果我首先通过图标打开应用程序并进入登录活动,然后将应用程序置于后台并通过单击某个链接打开应用程序,那么如果我在启动画面中按下后退按钮,则应用程序需要关闭而不是打开签到活动

所以请告诉我在这种情况下该怎么办

【问题讨论】:

  • 先去掉singleTask的特殊启动模式。这不是必需的,并且导致的问题多于解决的问题。看看有没有帮助。

标签: android kotlin android-intent


【解决方案1】:

这是您的活动堆栈:

Spash -> Welcome -> Sign-in

通过链接打开后

Sign-in -> Splash -> Video

因为您的应用在后台,最后一个活动是登录。

如果我们在onBackPressSplashAcitivity 中使用finish() 怎么样?

【讨论】:

  • 是的,我知道应用程序在后台,但我希望应用程序在启动画面中的后退单击时关闭,我尝试在启动画面中的 onbackpress 中完成,但仍然登录显示
  • finish is close splashactivity not clear back stack in which sign in is available
  • 你对,那是我的错误,你可以用finishAffinity()方法代替finish。该方法将关闭 SplashActivity 下方堆栈中的所有活动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 2017-12-04
  • 2012-06-07
  • 1970-01-01
  • 2011-10-24
相关资源
最近更新 更多