标签: lifecycle

如何处理和重新创建一些状态

请考虑下面的代码。

在 initState 期间创建了一个 textController。如果按下按钮,则会在 setState 内部创建另一个 textController:

import 'package:flutter/material.dart';

void main() { runApp(Test()); }

class Test extends StatefulWidget {
  TestState createState() => TestState();
}

class TestState extends State<Test> {
  TextEditingController textController;

  void initState() {
    print("initState");
    super.initState();

    textController = TextEditingController(text: "1st textController");
  }

  void dispose() {
    print("dispose");
    textController.dispose();
    super.dispose();
  }

  void onPressed() {
    print("onPressed");

    setState(() {
      print("setState");

      // It breaks if this line is uncommented.
      if (textController != null) textController.dispose();

      textController = TextEditingController(text: "2nd textController");
    });
  }

  Widget build(BuildContext context) …
Run Code Online (Sandbox Code Playgroud)

lifecycle widget flutter

8
推荐指数
1
解决办法
5208
查看次数

Application_Start与OnInit对比构造函数

自从我几年前开始编写经典的ASP 12(左右)以来,我已经完成了这一切,我从来没有找到一个很好的解决方案,因为ASP和ASP.NET的架构一直是不良做法的沼泽,魔术共享单身,等我最大的问题是用HttpApplication其非事件的事件(对象Application_Start,Application_End等等).

如果你想在HTTP应用程序的整个生命周期内做一次Application_Start事情,那么这是显而易见的.对?不完全是.首先,这本身不是一个事件,它是一个神奇的命名约定,如果遵循这个约定,会导致该方法在IIS创建的每个AppDomain上调用一次.

除了魔术命名惯例是一种可怕的做法,我开始认为这可能是StartHttpApplication对象上不存在事件的原因.所以我已经尝试过确实存在的事件,例如Init.嗯,这也不是一个真正的事件,它是一个可以覆盖的方法,这是下一个最好的事情.

似乎该Init()方法是针对HttpApplication对象的每个实例化调用的,每个AppDomain发生的次数不止一次.这意味着我不妨将我的启动逻辑放在HttpApplication对象的构造函数中.

现在我的问题是,为什么我不应该将我的启动逻辑放在构造函数中?为什么甚至Init()存在,我需要关心什么Application_Start?如果我这样做,任何人都可以解释为什么HttpApplication对象中的这个伪事件没有适当的事件或可覆盖的方法?

任何人都可以向我解释为什么在一个典型的ASP.NET应用程序中,我HttpApplication创建了8个实例(这会导致构造函数Init运行多次,当然;这可以通过锁定和调用的共享静态布尔值来缓解initialized)当我的应用程序只有一个AppDomain?

asp.net lifecycle httpapplication app-startup

7
推荐指数
2
解决办法
2216
查看次数

我的屏幕保护程序应用程序中的奇怪生命周期行为

我刚刚开发了一个屏幕保护程序应用程序,我在其生命周期中发现了一个奇怪的行为.我的工作流程是这样的:

  1. 启动我RegisterService,我称之为registerReceiver注册方法BroadcastReceiver,可以接收ACTION_SCREEN_OFF.

2.在这个onReceive方法中BroadcastReceiver,我开始一个活动作为屏幕保护程序.

3.在活动中,我写了一个Log.i()语句来跟踪它的运行情况.

我的问题是:

当屏幕超时或按POWER键时,屏幕关闭,系统将发送ACTION_SCREEN_OFF消息.正如我所料,我的接收器启动屏幕保护程序活动.不过,我觉得这个活动要求onCreate(),onResume(),onPause(),onResume()依次按照logcat的输出.

好像有些活动出现在我的屏幕保护程序前面并立即完成,所以我的屏幕保护程序调用onPause()然后onResume(). 在此输入图像描述

任何的想法?这个问题困扰我编程,请帮忙.谢谢!

lifecycle android screensaver

7
推荐指数
1
解决办法
402
查看次数

存储在NSUserDefaults中的数据是否会通过应用程序更新和应用程序重新安装(删除安装)持续存在?

这对我的应用程序很重要,因为我想在那里存储应用程序UDID,Apple建议从iOS 5.0开始创建特定于应用程序的UDID.

lifecycle nsuserdefaults udid ios

7
推荐指数
1
解决办法
4371
查看次数

在 ngOnChanges 钩子中检查 SimpleChanges 接口的类型

如果我们在当前组件的 ngOnChanges 钩子的 SimpleChanges 打字稿参数中进行类型检查,那就太好了。

这将防止我们在检查的属性中出错。

lifecycle visual-studio-code ngonchanges typescript2.1 angular

7
推荐指数
1
解决办法
3067
查看次数

Angular LifecyleHooks 以及 @ViewChild 何时有效?

我有点困惑。我以为我基本上了解了 angular 组件的生命周期,但后来我遇到了一个有趣的案例,其中组件的 @Input 未定义。

在这种情况下,我的应用程序有两个实例。给定的组件:LogoutWarning在注销挂起时显示,然后用户可以刷新登录令牌并继续。这很好用。

该实例在第一个应用程序更新登录令牌时出现,并隐藏显示LogoutWarning组件。在这个第一个应用程序中一切都很好。

第二个应用程序也显示了LogoutWarning组件,因为它检测到登录令牌将要过期并显示LogoutWarning modal,然后它注意到登录令牌已更新并调用 LogoutWarning.cancel() 以隐藏该模式。在这种情况下, this.logoutWarningModal.hide() 会爆炸,因为 this.logoutWarningModal 是UNDEFINED,即使生命周期 ngAfterViewInit() 显示 this.logoutWarningModal 已定义。

在这一点上,我感到非常惊讶。如果我只是检查 this.logoutWarningModal 是未定义的,而不是调用 this.logoutWarningModal.hide() 一切正常。但是为什么 this.logoutWarningModal 在这里未定义???

LoutWarning组件的代码很简单:

@Component({
  selector: 'logoutWarning',
  template: `
    <div bsModal #logoutWarning="bs-modal" [config]="{ show: true }" class="modal fade" tabindex="-1" role="dialog"
     aria-labelledby="new application version avaliable" aria-hidden="true" (onHidden)="hidden()">
      <div class="modal-dialog modal-sm">
        <div class="modal-content">
          <div class="modal-header">
            <div class="app_header">
              <div class="app_icon"><img src="assets/images/tracker_hi_res_512.gif"></div>
              <div class="app_name">Tracker</div>
            </div>
          </div>
          <div class="modal-body …
Run Code Online (Sandbox Code Playgroud)

lifecycle angular

7
推荐指数
1
解决办法
3241
查看次数

如何在 Angular 7 中设置 CdkVirtualScrollViewport 的初始索引(位置)

我需要的初始位置cdk-virtual-scroll-viewport不是列表的第一个元素/项目。

现在我找到了scrollToIndexscrollTo方法,但我只能在 中使用它时才能让它们工作ngAfterViewChecked,这感觉不对。

  1. 有人可以确认使用这些方法ngAfterViewChecked是正确的做事方式吗?
  2. 如果没有,请展示替代方法/技术?

  @ViewChild(CdkVirtualScrollViewport) cdkVirtualScrollViewport: CdkVirtualScrollViewport;
  numbers: number[] = [];

  constructor() {
    for (let index = 0; index < 10000; index++) {
      this.numbers.push(index);
    }
  }

  ngAfterViewChecked() {
    this.cdkVirtualScrollViewport.scrollToIndex(2000);
  }
Run Code Online (Sandbox Code Playgroud)
  <ul class="list">
    <cdk-virtual-scroll-viewport style="height:264px" itemSize="88">
      <ng-container *cdkVirtualFor="let n of numbers">
        <li style="height:88px">{{ n }}</li>
      </ng-container>
    </cdk-virtual-scroll-viewport>
  </ul>
Run Code Online (Sandbox Code Playgroud)

lifecycle angular virtualscroll angular-cdk angular7

7
推荐指数
1
解决办法
1751
查看次数

由于服务应用程序更新,我的应用程序被杀死

我在 logcat 中看到应用程序谷歌播放服务“com.google.android.gms”得到更新。

因此,活动管理器会杀死所有使用播放服务的应用程序,即使它们在前台。

I/ActivityManager( 2076): Force stopping com.google.android.gms appid=10008 user=-1: installPackageLI
I/ActivityManager( 2076): Killing 4051:com.google.android.youtube/u0a68 (adj 902): stop com.google.android.gms
I/ActivityManager( 2076): Killing 2883:com.google.android.gms.persistent/u0a8 (adj 100): stop com.google.android.gms
W/ActivityManager( 2076): Scheduling restart of crashed service com.google.android.gms/.common.stats.GmsCoreStatsService in 1000ms
W/ActivityManager( 2076): Scheduling restart of crashed service com.google.android.gms/.backup.BackupTransportService in 10993ms
...
I/ActivityManager( 2076): Killing 9409:com.android.vending/u0a26 (adj 200): stop com.google.android.gms
D/ConnectivityService( 2076): ConnectivityService NetworkRequestInfo binderDied(NetworkRequest [ LISTEN id=8, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&FOREGROUND] ], android.os.BinderProxy@a87ac95)
W/PackageManager( 2076): Trying to update system app code path from …
Run Code Online (Sandbox Code Playgroud)

lifecycle android updates android-activity

7
推荐指数
1
解决办法
2059
查看次数

什么时候调用“measureInWindow”是安全的?

我试图弄清楚在组件生命周期的哪个点我可以调用measureInWindow视图并保证获得正确的值。例如:

const Measure = () => {
  const ref = React.useRef();

  React.useLayoutEffect(() => {
    ref.current.measureInWindow((x, y) => {
      // y is 0
    })
  });

  return <View ref={ref} />;
};
Run Code Online (Sandbox Code Playgroud)

我在上面的例子中得到0y,而不是88哪个是正确的值,因为导航栏那么高。如果我将measureInWindow调用放在setTimeoutwith 中,0ms那么我会得到正确的值。

我也尝试使用 usinguseEffect而不是,useLayoutEffect我得到了相同的结果。

编辑

对这篇文章的评论让我看到onLayoutView. 我的初步测试表明我可以measureInWindow在那里成功调用。但是,除了粗略的测试之外,我仍然希望找到一些具体的文档。

<View
  ref={ref}
  onLayout={e => {
    ref.current.measureInWindow((x, y) => {
      console.log('onLayout', y);
    });
  }}
/>
Run Code Online (Sandbox Code Playgroud)

javascript lifecycle reactjs react-native

7
推荐指数
0
解决办法
2267
查看次数

某些设备上的 CameraX 黑屏预览

我正在使用camerax 在我的android 应用程序中捕获图像。对我来说一切正常,但一些用户在使用camerax活动时报告黑色预览屏幕。

但是,当用户从最近使用的应用程序打开该应用程序时,预览似乎可以正常工作。所以,我认为问题可能出在生命周期绑定上。

我在用

implementation "androidx.camera:camera-camera2:1.0.0-beta08"
Run Code Online (Sandbox Code Playgroud)

这是我的代码

    <androidx.camera.view.PreviewView
        android:id="@+id/viewFinder"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
Run Code Online (Sandbox Code Playgroud)


     private fun startCamera() {
        val cameraProviderFuture = ProcessCameraProvider.getInstance(this)

        cameraProviderFuture.addListener({
            cameraProvider = cameraProviderFuture.get()

            val preview = Preview.Builder()
                    .build()
                    .also {
                        it.setSurfaceProvider(viewFinder.createSurfaceProvider())
                    }

            imageCapture = ImageCapture.Builder()
                    .build()

            val cameraSelector = CameraSelector.Builder()
                    .requireLensFacing(CameraSelector.LENS_FACING_BACK)
                    .build()
            
            try {
                cameraProvider.unbindAll()
                cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture)

            } catch (exc: Exception) {
                Log.e(TAG, "Use case binding failed", exc)
            }

        }, ContextCompat.getMainExecutor(this))
    }


     private fun takePhoto() {
        val imageCapture = imageCapture ?: return

        val photoFile = File( …
Run Code Online (Sandbox Code Playgroud)

lifecycle android android-camera android-camerax

7
推荐指数
1
解决办法
3712
查看次数