Android出于某种原因,我在onPause和onDestroyView之间有延迟

问题描述

我在我的应用程序中使用的活动有很多不同的片段,而我遇到的一个主要问题是,当我从一个片段转到另一个片段时,调用onPause和onDestroyView之间大约有一秒的延迟(使用简单的日志进行检查)。这就产生了一个问题,如果我在输入片段后立即按返回按钮,它将返回并不调用onCreateView,基本上显示一个空白屏幕(活动的背景)。任何想法可能导致这种情况发生吗?我已经尝试解决了很长时间。

class MainMenuTableViewController: Fragment() {

/**Main menu,show all the topics and stuff*/

val Topics = arrayOf<TriviaQuestion.Topic>(TriviaQuestion.Topic.anatomy,TriviaQuestion.Topic.cpr,TriviaQuestion.Topic.medicine,TriviaQuestion.Topic.anamnesis,TriviaQuestion.Topic.routine,TriviaQuestion.Topic.trauma,TriviaQuestion.Topic.teamWork,TriviaQuestion.Topic.nbc,TriviaQuestion.Topic.mentalHealth,TriviaQuestion.Topic.publicHealth,TriviaQuestion.Topic.other,TriviaQuestion.Topic.coronaTeams,TriviaQuestion.Topic.coronaNursingTeams)
override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {
    // Inflate the layout for this fragment
    DatabaseFacade.fetchTriviaQuestions()
    MenuBarDatabaseFacade.databaseSingleton.getVideosAndMaterials()
    // Handle the back button event
    return inflater.inflate(R.layout.fragment_main_menu,container,false)
}

override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
    Log.d("popbackstacktest","view created")
    super.onViewCreated(view,savedInstanceState)
    mainMenutopicsRecyclerView.layoutManager = linearlayoutmanager(activity)
    lineImage.scaleX = 0.0000001f
    mainMenutopicsRecyclerView.adapter = MainMenuTableViewAdapter(Topics) { position ->
        MenuViewController.tabSelected = Tabs.Pdf
        MenuViewController.topicChosen = Topics[position]
        findNavController().navigate(R.id.action_MainMenuFragment_to_MenuViewFragment)
    }
}

override fun onStart() {
    super.onStart()
    Log.d("popbackstacktest","starting")
}

override fun onResume() {
    Log.d("popbackstacktest","resuming")
    super.onResume()
    animateLine()
}

override fun onDestroy() {
    super.onDestroy()
    Log.d("popbackstacktest","destroying")

}

override fun onDestroyView() {
    super.onDestroyView()
    Log.d("popbackstacktest","destroying view")

}

override fun onPause() {
    super.onPause()
    Log.d("popbackstacktest","pausing")
}

fun animateLine(){
    /**Animate line to get bigger until full size**/
    lineImage.scaleX = 0.0000001f
    val xScaleAnimator = ObjectAnimator.ofFloat(lineImage,"scaleX",1f)
    xScaleAnimator.duration = 1250
    val scaleAnimator = AnimatorSet()
    scaleAnimator.play(xScaleAnimator)
    scaleAnimator.start()
}

那是片段的所有代码,基本上它具有recyclerview,当我按一个项目时,它将相应地导航到另一个片段。问题是,正如我之前提到的那样,即使在显示一个片段之后,onDestroyView也会被延迟调用,这意味着如果我在输入片段后立即按返回按钮(或者如果我将popBackStack( )在第二个片段的onViewCreated中

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)