标签: lifecycle

UIViewController:调用viewWillAppear,而不是viewDidAppear

在UIViewController子类中,我有以下方法:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    // do something
    myTextField.text = @"Default";
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    // do something
    [myTextField selectAll:self];
    [myTextField becomeFirstResponder];
}

- (void)viewDidLoad {
    [super viewDidLoad];    
    // do something
    myTextField.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)

NIB是使用Interface Builder创建的.导航控制器通过pushViewController推送相应的视图控制器对象.

意图行为是在文本字段中显示默认文本条目,以选择整个文本并将文本字段设置为第一响应者.[编辑:我注意到选择所有做出第一响应者没有意义,因为选择会消失; 不过,我想知道为什么这些方法的行为如下所述.

但是,在调用方法viewDidLoad和viewWillAppear时,不会调用viewDidAppear方法.谁能告诉我为什么?我在网上找到的大多数问题和这里处理viewWillAppear/viewDidAppear都没有用; 我也明白,在子视图或以编程方式创建的视图中,这些方法不会被引发; 但是这不适用于案例,我也想知道为什么这些"生命周期"方法中的一个被引发而另一个没有.

任何的想法?谢谢!

iphone lifecycle uiviewcontroller

16
推荐指数
2
解决办法
8913
查看次数

在基于注释的bean中定义destroy-method?

我正在寻找一种方法来告诉Spring在基于注释的bean上应该调用哪个方法来调用该bean.

我实际想要实现的是,当会话范围的bean被销毁时被通知以便从该会话中持久存储一些东西.

lifecycle spring annotations

16
推荐指数
1
解决办法
1万
查看次数

为什么我会想要`setRetainInstance(false)`? - 或 - 处理设备旋转的正确方法

如果我错了,请纠正我.这是一个澄清问题,因为我没有看到它明确写在任何地方.

在Android 4中,您可以调用setRetainInstance(true)on Fragment以便在配置更改(这基本上意味着设备旋转)时,Fragment不会销毁java对象并且不会创建它的新实例.也就是说,保留了实例.

由于您不必处理和捆绑所有数据,因此它可以传递给新的(或)实例,只是再次进行非捆绑,因此这比Android 1-3更加理智且不那么令人愤怒.这基本上是你期望发生的事情,并且可以说它应该从一开始就如何起作用.onRetainNonConfigurationStateInstance()FragmentActivityActivity

通过setRetainInstance(true)视图也可以onCreateView()像您期望的那样在旋转时重新创建(被调用).我假设(未测试)资源解析(layoutvs layout-land)有效.

所以我的问题是双重的:

  1. Activities从一开始为什么不喜欢这个.
  2. 为什么这不是默认值?是否有过任何理由,你为什么其实是想你Fragment被无谓破坏并重新创建的轮换?因为我想不到任何.

编辑

澄清我将如何做到:

class MyFragment extends Fragment
{
    // All the data.
    String mDataToDisplay;
    // etc.

    // All the views.
    TextView mViewToDisplayItIn;
    // etc.

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
        mDataToDisplay = readFromSomeFileOrWhatever(); // Ignoring threading issues for now.
    }

    @Override
    public View onCreateView(LayoutInflater inflater, …
Run Code Online (Sandbox Code Playgroud)

lifecycle android rotation fragment android-activity

16
推荐指数
2
解决办法
3052
查看次数

Flutter上的小部件的onResume()和onPause()

现在,一个小部件只有initeState()在第一次创建小部件时被触发,而dispose()则在小部件被销毁时被触发.有没有一种方法来检测窗口小部件何时返回到前台?当一个小部件即将进入后台时,因为另一个小部件只是被预见了?这相当于onResume和onPause被触发为Android,viewWillAppear和viewWillDisappear为ios

lifecycle android ios dart flutter

16
推荐指数
5
解决办法
1万
查看次数

Android:应用程序全局onPause()和onResume()?

有什么样的应用程序的全局onPause()onResume()

我的主要活动是监听GPS修复,我想在切换到另一个屏幕/活动时继续工作.因此,我不能LocationListener在活动中取消注册onPause().但是,我仍然希望在切换到另一个应用程序时取消注册我的GPS监听器(因此节省电池)并在返回我的应用程序时将其重新打开,无论用户当前处于何种屏幕/活动状态.

有任何想法吗?

lifecycle gps android geolocation

15
推荐指数
2
解决办法
7048
查看次数

在HttpApplication.Error之后,哪些ASP.NET生命周期事件会触发?

我想知道在通过HttpApplication.Error事件处理错误后,ASP.NET请求生命周期的哪些部分发生.具体来说,在出现错误后,在http://msdn.microsoft.com/en-us/library/bb470252.aspx#Stages中列出的哪些事件会触发?我知道EndRequest仍然会触发,我怀疑PreSendRequestHeaders和PreSendRequestContent也是如此,但除此之外我不知道.

它取决于生命周期中何时发生错误?是否依赖于我是否在错误处理程序中调用Server.ClearError()?

我问这个问题是因为我不知道是否应该从我的错误处理程序中调用HttpApplication.CompleteRequest().

asp.net lifecycle httpapplication

15
推荐指数
1
解决办法
2429
查看次数

在以下情况下,活动生命周期中调用了哪些方法:

假设我有一个Hello World单个Activity应用程序.我启动这个应用程序.

在每种情况下调用哪些方法:

  • 按下主页按钮:
    按下后退按钮:?
    收到电话:?

一旦用户通过应用程序图标再次启动应用程序,就会调用哪些方法(假设操作系统没有"其他应用程序需要内存条件"):

  • 按下主页按钮:?
    按下后退按钮:?
    收到电话:?

谢谢大家.

编辑:额外信用:用户如何在onPause不调用的情况下调用onStop

lifecycle android android-activity

15
推荐指数
3
解决办法
2万
查看次数

Spring请求范围bean

如何设置每个请求创建一次的bean.

我试图这样做:

   @Component
   @Scope(value = "request")
   public class TestBean {
        @PostConstruct
        public void init() {
             System.out.println("start request");
        }

        @PreDestroy
        public void onDestroy() {
             System.out.println("ends request");
        }
   }
Run Code Online (Sandbox Code Playgroud)

谢谢.

java lifecycle spring spring-mvc

15
推荐指数
1
解决办法
2万
查看次数

如何在React的recompose的生命周期方法中设置state?

我在我的React项目中使用重构 https://github.com/acdlite/recompose/

这是一个很棒的图书馆.我正在使用该compose实用程序作为容器组件,将状态向下作为道具传递给表示组件,如下所示:

const enhance = compose(
  lifecycle({
    componentDidMount() {
      myCall
        .getResponse([productId])
        .then(products => {
          setIsReady(true);
        });
    },
  }),
  withState('isAvailable', 'setIsAvailable', false),
  withState('isReady', 'setIsReady', false),
  mapProps(({
    setIsAvailable,
    setIsReady,
    ...state,
  }) => ({
    onLogoutTouchTap: () => {
      ...
Run Code Online (Sandbox Code Playgroud)

请注意其中的setIsReady(true)电话componentDidMount.这是我想要做的,但是lifecycle/componentDidMount无权访问setIsReady.如何componentDidMount通过重构来完成更新状态的预期结果?

javascript lifecycle reactjs recompose

15
推荐指数
1
解决办法
4239
查看次数

我怎么知道onResume是在onCreate之后出现的?

我没有什么活动,从一个活动我打开另一个活动,然后回到第一个...

关键是onCreate被称为1,而onResume每次显示活动时.例如,当我关闭之前从A开始的B时,onResume被调用但不是onCreate ....

我的问题是我不想在onCreate之后运行onResume,我只想在没有调用onCreate的情况下运行代码

这可能没有静态标志吗?

有来自android的一些方法或标志,如comeAfterOnCreate?

@Override
protected void onResume() {
   if(comesAfterOnCreate){
       //DO not run this code
   }else{
      //run the long task
   }
Run Code Online (Sandbox Code Playgroud)

我使用静态标志显示了许多解决方案的答案,感谢各位的努力和提供帮助,但我感兴趣的是有一些方法或东西......

lifecycle android onresume oncreate

14
推荐指数
2
解决办法
1万
查看次数