onNewIntent()生命周期和注册监听器

我使用singleTop Activity通过onNewIntent()从搜索对话框接收意图。

我注意到onPause()onNewIntent()之前onNewIntent() ,然后调用onResume() 。 视觉:

  • 搜索对话框启动
  • 搜索意图激发到活动
  • onPause()
  • onNewIntent()
  • onResume()
  • 问题是我有在onResume()中注册的监听器在onPause()中被移除,但是它们在onNewIntent()调用中需要。 有没有一种标准的方法让这些听众可用?


    onNewIntent()意味着已经在堆栈中的其他位置运行的singleTop活动的入口点,因此无法调用onCreate() 。 从活动生命周期的角度来看,因此需要在onNewIntent()之前调用onPause() onNewIntent() 。 我建议你重写你的活动,不要在onNewIntent()使用这些监听器。 例如,大部分时间我的onNewIntent()方法看起来像这样:

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        // getIntent() should always return the most recent
        setIntent(intent);
    }
    

    通过利用getIntent()onResume()发生所有设置逻辑。


    除了首次创建活动时,OnNewIntent()始终会被调用for singleTop / Task活动。 当时onCreate被调用。

    您可以通过将它放入onCreate方法来调用onNewIntent

    @Override
    public void onCreate(Bundle savedState)
    {
        super.onCreate(savedState);
        onNewIntent(getIntent());
    }
    
    @Override
    protected void onNewIntent(Intent intent) 
    {
      super.onNewIntent(intent);
      //code
    }
    
    链接地址: http://www.djcxy.com/p/88707.html

    上一篇: onNewIntent() lifecycle and registered listeners

    下一篇: How to start a new activity when screen orientation changes? Android