eik*_*kuh 6 c# android xamarin.android async-await xamarin
目前我正在将现有的C#Windows 8/iOS应用程序移植到Android(使用Xamarin).
我使用了很多异步/等待文件IO,对话框,网络等...
当应用程序在等待呼叫期间暂停/暂停时会发生什么?在Windows和iOS下有两种可能性:
在这两种情况下,没有任何记事本泄漏,控制流程没有变化.
但是,在Android下,可以在进程保持活动状态时销毁并重新创建一个Activity.在我对async/await的理解中,这意味着:
我的假设是真的吗?如果是的话,可以做些什么?(不使程序像async/await发明那样复杂)
Android Activity 保证在停用/销毁之前调用 OnPause,并在启动时调用 OnResume(请参阅http://developer.android.com/training/basics/activity-lifecycle/index.html)。
如果您的 Activity 有可用的 CancellationTokenSource 怎么样?然后在 OnPause 中你可以调用 Cancel 然后使用:
try
{
// Your async code
...
}
catch (OperationCancelledException e)
{
}
Run Code Online (Sandbox Code Playgroud)
另请参阅http://msdn.microsoft.com/en-us/library/jj155759.aspx以了解取消异步任务。
更多的是建议而不是明确的答案,但我希望它有所帮助。
编辑:
当我开始在代码中引入 async/await 时,我发现它就像僵尸病毒。一旦开始异步,您就会发现它会传播到代码的其余部分。出于同样的原因,您可能会收到很多异步调用。一般有两条规则需要遵循:
public async Task Foo()而不是public async void Foo()在我自己的实践中,我发现了两个可以打破这些一般规则的地方。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
3227 次 |
| 最近记录: |