请考虑下面的代码。
在 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) 自从我几年前开始编写经典的ASP 12(左右)以来,我已经完成了这一切,我从来没有找到一个很好的解决方案,因为ASP和ASP.NET的架构一直是不良做法的沼泽,魔术共享单身,等我最大的问题是用HttpApplication其非事件的事件(对象Application_Start,Application_End等等).
如果你想在HTTP应用程序的整个生命周期内做一次Application_Start事情,那么这是显而易见的.对?不完全是.首先,这本身不是一个事件,它是一个神奇的命名约定,如果遵循这个约定,会导致该方法在IIS创建的每个AppDomain上调用一次.
除了魔术命名惯例是一种可怕的做法,我开始认为这可能是Start在HttpApplication对象上不存在事件的原因.所以我已经尝试过确实存在的事件,例如Init.嗯,这也不是一个真正的事件,它是一个可以覆盖的方法,这是下一个最好的事情.
似乎该Init()方法是针对HttpApplication对象的每个实例化调用的,每个AppDomain发生的次数不止一次.这意味着我不妨将我的启动逻辑放在HttpApplication对象的构造函数中.
现在我的问题是,为什么我不应该将我的启动逻辑放在构造函数中?为什么甚至Init()存在,我需要关心什么Application_Start?如果我这样做,任何人都可以解释为什么HttpApplication对象中的这个伪事件没有适当的事件或可覆盖的方法?
任何人都可以向我解释为什么在一个典型的ASP.NET应用程序中,我HttpApplication创建了8个实例(这会导致构造函数Init运行多次,当然;这可以通过锁定和调用的共享静态布尔值来缓解initialized)当我的应用程序只有一个AppDomain?
我刚刚开发了一个屏幕保护程序应用程序,我在其生命周期中发现了一个奇怪的行为.我的工作流程是这样的:
RegisterService,我称之为registerReceiver注册方法BroadcastReceiver,可以接收ACTION_SCREEN_OFF.2.在这个onReceive方法中BroadcastReceiver,我开始一个活动作为屏幕保护程序.
3.在活动中,我写了一个Log.i()语句来跟踪它的运行情况.
我的问题是:
当屏幕超时或按POWER键时,屏幕关闭,系统将发送ACTION_SCREEN_OFF消息.正如我所料,我的接收器启动屏幕保护程序活动.不过,我觉得这个活动要求onCreate(),onResume(),onPause(),onResume()依次按照logcat的输出.
好像有些活动出现在我的屏幕保护程序前面并立即完成,所以我的屏幕保护程序调用onPause()然后onResume().

任何的想法?这个问题困扰我编程,请帮忙.谢谢!
这对我的应用程序很重要,因为我想在那里存储应用程序UDID,Apple建议从iOS 5.0开始创建特定于应用程序的UDID.
如果我们在当前组件的 ngOnChanges 钩子的 SimpleChanges 打字稿参数中进行类型检查,那就太好了。
这将防止我们在检查的属性中出错。
lifecycle visual-studio-code ngonchanges typescript2.1 angular
我有点困惑。我以为我基本上了解了 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) 我需要的初始位置cdk-virtual-scroll-viewport不是列表的第一个元素/项目。
现在我找到了scrollToIndex和scrollTo方法,但我只能在 中使用它时才能让它们工作ngAfterViewChecked,这感觉不对。
ngAfterViewChecked是正确的做事方式吗? @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)
我在 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) 我试图弄清楚在组件生命周期的哪个点我可以调用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)
我在上面的例子中得到0了y,而不是88哪个是正确的值,因为导航栏那么高。如果我将measureInWindow调用放在setTimeoutwith 中,0ms那么我会得到正确的值。
我也尝试使用 usinguseEffect而不是,useLayoutEffect我得到了相同的结果。
编辑
对这篇文章的评论让我看到onLayout了View. 我的初步测试表明我可以measureInWindow在那里成功调用。但是,除了粗略的测试之外,我仍然希望找到一些具体的文档。
<View
ref={ref}
onLayout={e => {
ref.current.measureInWindow((x, y) => {
console.log('onLayout', y);
});
}}
/>
Run Code Online (Sandbox Code Playgroud) 我正在使用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 ×10
android ×3
angular ×3
angular-cdk ×1
angular7 ×1
app-startup ×1
asp.net ×1
flutter ×1
ios ×1
javascript ×1
ngonchanges ×1
react-native ×1
reactjs ×1
screensaver ×1
udid ×1
updates ×1
widget ×1