如何立即显示密码活动,而现有活动不会在后台闪烁几秒钟?

Posted

技术标签:

【中文标题】如何立即显示密码活动,而现有活动不会在后台闪烁几秒钟?【英文标题】:How to show password activity immediately without existing activity getting flashed for few seconds while coming from background? 【发布时间】:2019-12-22 11:45:02 【问题描述】:

我想在应用程序从后台打开时始终在堆栈顶部添加密码屏幕。当应用程序来自后台时,我可以使用 ActivityLifecycleCallbacksLifecycleObserver 找出方法,并且可以在基本活动的onStart 中显示密码屏幕。但是在几秒钟内,用户会看到现有的活动从它转到后台,然后意图进入密码活动。我想要一种方法,以便在应用程序进入后台时添加密码活动。但是通过这些方法,我只能知道应用程序何时已经进入后台。我无法在不启动的情况下将密码活动添加到堆栈。

【问题讨论】:

试试finish();在 onPause 回调上关闭当前活动。 【参考方案1】:

您可以在 BaseActivity 中使用片段: 活动类:

public class BaseActivity extends AppCompatActivity 

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (ifConditionTrue) 
        //Launch whatever fragment you want
     else 
        addFragment(new PasswordFragment());
    


// Replace current Fragment with the destination Fragment.
public void addFragment(Fragment destFragment) 
    // First get FragmentManager object.
    FragmentManager fragmentManager = getSupportFragmentManager();

    // Begin Fragment transaction.
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    // Replace the layout holder with the required Fragment object.
    fragmentTransaction.replace(R.id.fragment_container, destFragment);
    fragmentTransaction.addToBackStack(null);

    // Commit the Fragment replace action.
    fragmentTransaction.commit();

base_activity_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".BaseActivity">

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_
    android:layout_
    android:layout_gravity="top" />

</androidx.constraintlayout.widget.ConstraintLayout>`

【讨论】:

当应用程序进入前台时不会调用基本活动的 onCreate(),我不应该在基本活动中设置任何布局。即使我这样做,也会被子活动覆盖

以上是关于如何立即显示密码活动,而现有活动不会在后台闪烁几秒钟?的主要内容,如果未能解决你的问题,请参考以下文章

如何在后台启动活动并立即关闭它?

只有在验证用户名和密码正确后,如何在后台任务中启动活动?

现在跑步活动指示器

Google Play 游戏服务成就活动立即结束

如何检测用户何时专门通过“最近使用的应用”返回应用?

如果活动在后台运行,则无需通过启动器即可从小部件恢复现有活动