Delphi XE5 aplicación Android debe procesar las tareas que consumen mucho tiempo dentro de un hilo?

Soy un novato en el desarrollo de aplicaciones Android de Delphi XE5.

Durante una tarea que lleva mucho tiempo siendo procesada en el proceso principal, la piel de golpear en la pantalla (tocar continuamente la pantalla una y otra vez) causa el final anormal de la aplicación.

Supongo que es debido a la llamada "aplicación no responde" y confirmar mi conjetura por el bloque de código a continuación.

procedure TForm1.Button1Click(Sender: TObject); begin Button1.Text := 'Start'; // Text is 'Button1' on design time sleep(10000); Button1.Text := 'OK'; end; procedure TForm1.Button2Click(Sender: TObject); begin Button2.Text := 'Start'; // Text is 'Button2' on design time TThread.CreateAnonymousThread( procedure() begin Sleep(10000); TThread.Synchronize(TThread.CurrentThread, procedure begin Button2.Text := 'OK'; end); end).Start; end; 

En el caso del Button1, las derivaciones continuas causan ANR. Cuando restablezco la aplicación desde la pila de aplicaciones, el texto de Button1 muestra 'Button1'. Parece que el proceso de Button1Click fue rebobinado. Por el contrario, en el caso del Button2, las pestañas continuas no causarán ANR.

Nunca he utilizado subprocesos en el desarrollo de aplicaciones de Windows. ¿Es una forma normal de procesar tareas que consumen mucho tiempo en un hilo (no en el hilo principal)? ¿O hay otras soluciones?

Threading es la solución correcta a este problema. El hilo principal debe ser sensible si desea evitar que el sistema determine que su aplicación no responde. Esto es igual de cierto para las plataformas móviles que para las plataformas de escritorio.

Por lo tanto, mover todas las tareas largas de ejecución en los hilos, y así mantener su hilo principal sensible.

No sé mucho sobre Delphi. Pero en el androide nativo utilizamos hilos de fondo o servicios para realizar tareas de ejecución larga para que no bloquee el subproceso de interfaz de usuario.

Para Delphi, ve a través de este enlace. http://www.fmxexpress.com/build-responsive-apps-with-timers-and-threads-using-delphi-xe6-firemonkey-on-android-and-ios/

Hop te ayuda.

  • ¿Por qué utilizar AsyncTaskLoader con LoaderManager, en lugar de Simple Handler?
  • Cómo matar un hilo y un controlador antes de ir a una nueva actividad
  • End SurfaceView y GameThread al salir de la aplicación
  • Gran latencia entre onPreExecute y doInBackground en AsyncTask
  • Cómo enlazar una actividad a un servicio y controlar y administrar el servicio desde la actividad
  • AsyncTask con rotación de pantalla - onRetainNonConfigurationInstance obsoleta
  • Android: java.lang.OutOfMemoryError: falla en la creación del hilo
  • Cómo llamar a las actividades de un hilo no actividad?
  • Diferencia entre android runOnUiThread y código simple en java
  • Contabilización del mensaje Toast de un hilo
  • Android claro hilo webview, libre de memoria, evitar OutOfMemoryError
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.