当用户在iPhone上的设置中更改NsuserDefaults并在暂停后激活我的应用程序时,我想重新加载活动视图.
我怎样才能做到这一点?
我有一个带有标签栏的应用程序,该标签栏包含一些包含用户生成内容的标签.当每个视图控制器加载时,viewDidLoad方法向服务器发出HTTP请求以获取数据,然后相应地填充其视图.但是,一旦加载了所有数据,视图将保持不变(除非卸载并重新加载视图控制器).
许多其他具有用户生成内容的应用程序具有类似的行为,除非每个视图将重新加载,如果应用程序进入后台然后再次返回到前台.也就是说,当用户在应用程序处于活动状态时在各个选项卡之间切换时,内容将不会自动刷新.如果用户"退出"应用程序然后稍后返回,则将重新加载视图.
是否有设计应用程序的标准做法以这种方式行事?具体来说,我想知道是否有UIKit细节,我可以利用它来刷新我对应用程序"重启"的看法.
否则,我想一个简单的方法是让每个视图控制器在viewDidLoad中注册通知,并监听应用程序进入前台.然后,控制器可以通过重新加载其数据来响应每个通知.
iphone nsnotifications uiviewcontroller viewdidload multitasking
鉴于这个Unix shell脚本:
test.sh:
#!/bin/sh
sleep 2 &
sleep 5 &
sleep 1 &
wait
Run Code Online (Sandbox Code Playgroud)
时间./test.sh
real 0m5.008s
user 0m0.040s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
你如何在Unix机器上用Ruby完成同样的事情?
sleep命令只是一个例子,只是假设它们是长时间运行的外部命令.
我现在正在阅读有关抢先式多任务处理的资料 - 有一件事让我失望.
所有这些材料都暗示,操作系统以某种方式从"外部"中断CPU上的运行过程,因此导致上下文切换等.
但是,我无法想象当操作系统的内核只是CPU上的另一个进程时,它将如何工作.当另一个进程占用CPU时,操作系统如何从"外部"切换?
这是我在这里的第一个问题,因为我在开发我的第一个iOS应用时遇到了问题.它是成千上万的手电筒应用程序之一,但我正在努力为它添加尽可能多的功能.其中一个是在应用程序进入后台或终止时保存应用程序的状态.转到前台(iOS 4或更高版本)或重新启动后,我正在从文件加载设置并重新应用它们.其中一个设置显然是AVCaptureDevice.torchMode.但是,我遇到了这个问题.我正在该applicationDidBecomeActive方法中重新应用这些设置.这一切似乎都有效,但是当我快速点击主页按钮然后重新启动应用程序时,应用程序将执行以下操作(我将applicationDidBecomeActive方法延迟观察它):
1.显示黑屏(加载)
2.执行applicationDidBecomeActive并打开LED(我把延迟放在这里)
3.显示我的当前UIViewController和同时关闭LED
只有在它被发送后立即从后台调用应用程序后才会发生.我知道这不是现实的用例场景,但我喜欢认为错误常常"堆积",并且由于这种(可能)糟糕的设计,我将来可能会遇到其他问题.我绝对相信这不是我的代码关闭LED,因为NSLog每当我的代码修改AVCaptureDevice.torchMode属性.所以,确切地说,我的问题是:
什么方法被调用applicationDidBecomeActive,可能与之相关,可能UIViewController会关闭我的火炬?是否有任何可能的解决方案或解决方案?
我正在开发一个实现longpolling的应用程序,因为我希望用户在收到通知后立即收到通知.我有这个部分工作,但我还需要使用javascript函数扩展它,每20秒向服务器发送一次'heartbeat'.
我的问题:如何在不完全中断代码20秒的情况下执行此操作(以便其他javascript在计数时仍然执行)并且是否有某种方法可以使用第二个连接?因为当心跳发送给用户时,我不希望我的longpolling被中断.
有任何想法吗?
窗口商店应用程序具有我需要在应用程序启动时调用的长时间运行方法,但我不需要等待它完成.我希望它作为后台任务运行.如果转到应用程序的某个部分(报告),那么我将检查并在必要时等待该任务.
Public Shared Async Function UpdateVehicleSummaries(p_vehicleID As Int32) As Task(Of Boolean)
Dim tempVehicle As Koolsoft.MARS.BusinessObjects.Vehicle
For Each tempVehicle In Vehicles
If p_vehicleID = 0 Or p_vehicleID = tempVehicle.VehicleID Then
UpdateVehicleStats(tempVehicle)
End If
Next
Return True
End Function
Run Code Online (Sandbox Code Playgroud)
它被称为这样
Dim updateTask As Task(Of Boolean) = UpdateVehicleSummaries(0)
Run Code Online (Sandbox Code Playgroud)
它没有Await调用,我得到它将同步运行的警告.我如何启动这样的东西并让它以异步方式运行?我希望它在自己的线程/任务上运行而不会阻塞接口线程.有任何想法吗?
感谢名单!
我正在使用XCode 7(Beta)来测试多任务,但我无法用它来测试.
我只是想确定是否有像我这样的人,面对同样的问题.
var finalList = new List<string>();
var list = new List<int> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ................. 999999};
var init = 0;
var limitPerThread = 5;
var countDownEvent = new CountdownEvent(list.Count);
for (var i = 0; i < list.Count; i++)
{
var listToFilter = list.Skip(init).Take(limitPerThread).ToList();
new Thread(delegate()
{
Foo(listToFilter);
countDownEvent.Signal();
}).Start();
init += limitPerThread;
}
//wait all to finish
countDownEvent.Wait();
private static void Foo(List<int> listToFilter)
{
var listDone = Boo(listToFilter);
lock (Object)
{
finalList.AddRange(listDone);
}
} …Run Code Online (Sandbox Code Playgroud) multitasking ×10
ios4 ×3
iphone ×3
ios ×2
objective-c ×2
ajax ×1
c# ×1
flashlight ×1
heartbeat ×1
ios9 ×1
javascript ×1
kindle ×1
long-polling ×1
process ×1
ruby ×1
shell ×1
task ×1
unix ×1
vb.net ×1
viewdidload ×1