如何立即显示密码活动,而现有活动不会在后台闪烁几秒钟?
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 【问题描述】:我想在应用程序从后台打开时始终在堆栈顶部添加密码屏幕。当应用程序来自后台时,我可以使用 ActivityLifecycleCallbacks 或 LifecycleObserver 找出方法,并且可以在基本活动的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(),我不应该在基本活动中设置任何布局。即使我这样做,也会被子活动覆盖以上是关于如何立即显示密码活动,而现有活动不会在后台闪烁几秒钟?的主要内容,如果未能解决你的问题,请参考以下文章