我有一個簡單的Android應用程序,我草擬了一個循環中的數學計算一定的秒數(在本例中爲100)。但是,當我運行應用程序時,因爲程序中沒有任何內容要在循環之後完成,所以在寫入已完成計算的次數時,它會顯示爲未響應。有一個簡單的方法可以解決這個問題嗎?如何阻止此應用程序顯示爲未響應?
-1
A
回答
1
您必須在另一個線程中執行此操作,這樣用戶界面不會被阻止,也不會變得不響應。
同時,您可以使用進度對話框顯示活動指示器。當這個過程完成後就隱藏它。
注意交叉線程中的UI操作。
0
使用異步等待並在任務中運行數學。如果你從一個活動開始任務,不要忘記取消它,如果由於某種原因活動被破壞。
這是應該讓你開始一個快速的樣品(替代註釋掉):
[Activity (Label = "AsyncSample", MainLauncher = true)]
public class MainActivity : Activity
{
private CancellationTokenSource cancellation;
private Button button;
private Task task;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
button = FindViewById<Button> (Resource.Id.myButton);
button.Enabled = false;
this.cancellation = new CancellationTokenSource();
this.task = RunTask(this.cancellation.Token, new Progress<int> (a => this.button.Text = string.Format ("Progress {0}", a)));
}
protected override void OnDestroy()
{
this.cancellation.Cancel();
base.OnDestroy();
}
// protected override void OnStop()
// {
// base.OnStop();
// this.cancellation.Cancel();
// }
//
// protected override async void OnStart()
// {
// base.OnStart();
//
// this.cancellation = new CancellationTokenSource();
// await RunTask (this.cancellation.Token, new Progress<int> (a => this.button.Text = string.Format ("Progress {0}", a)));
// }
private Task RunTask(CancellationToken cancelToken, IProgress<int> progress)
{
return Task.Factory.StartNew(()=>
{
for (var n = 0; n < 100 && !cancelToken.IsCancellationRequested;)
{
// await Task.Delay (1000);
Thread.Sleep(1000);
progress.Report (++n);
}
});
}
}
相關問題
- 1. 阻止顯示的Excel應用程序
- 2. 阻止應用程序是在cmd選項卡(應用程序循環)顯示
- 3. 阻止應用程序
- 4. 如何使應用程序顯示爲選項應用程序?
- 5. 由於form_load代碼阻止應用程序不顯示
- 6. 如何使控制檯應用程序顯示「不響應」?
- 7. 如何避免顯示「應用程序不響應」對話框
- 8. 如何防止pygame應用程序停止響應
- 9. 如何阻止Vpython不響應
- 10. 如何在Windows上遠程阻止和解除阻止任何應用程序
- 11. 如何在grails應用程序中阻止訪問石英顯示器
- 12. 如何防止Android顯示應用程序停止消息
- 13. Android應用程序停止響應SQLCipher
- 14. 應用程序隨機停止響應。
- 15. 我的應用程序停止響應
- 16. Jquery Ajax響應未顯示
- 17. 應用程序compat actionbar v21應用程序圖標未顯示
- 18. Android應用程序未在「所有應用程序」中顯示
- 19. Iphone應用程序未顯示在iPad應用程序中心
- 20. 如何跟蹤阻止應用程序並刪除應用程序的用戶?
- 21. 阻止IO如何影響Linux中的多線程應用程序/服務
- 22. C#阻止等待響應
- 23. mail()阻止JSON響應
- 24. Javascript angular:阻止http.get響應
- 25. 使用C#阻止應用程序
- 26. 阻止用戶訪問應用程序
- 27. 線程未正確完成,阻止應用程序關閉
- 28. JavaFx Platform.runLater應用程序未響應
- 29. 應用程序未響應 - AOSP
- 30. 我的SDL應用程序未響應