Configuration:Android postinvalidate n'invoque pas onDraw()
mise en page de l'activité a un objet SurfaceView (obj) avec les callbacks SurfacHolder définies. obj a le fil suivant défini (ce qui est écrit en C# via Xamarin):
void DrawThread() {
Canvas c;
while (drawingThreadActive) {
c=null;
try {
c = this.Holder.LockCanvas(null);
lock(Holder) {
//force redraw
PostInvalidate();
}
} finally {
if (c!=null) {
this.Holder.UnlockCanvasAndPost(c);
}
}
//sleep for 50 ms or so (20Hz refresh)
}
}
Le rappel SurfaceCreated()
est appelé très bien, qui commence ce fil. Toutefois, l'appel à PostInvalidate() n'aboutit jamais à la fonction onDraw()
appelée. Je suis sûr que tout est configuré correctement - une idée de ce qui me manque?
Étant donné que la méthode SurfaceCreated()
est appelée, je suppose qu'il est « visible dans l'interface utilisateur »
Toute idée de ce que je suis absent?
Je suppose que 'DrawThread' ne fonctionne pas sur le thread principal, n'est-ce pas? – ssantos
Comment déterminer où/où se trouve le thread principal? J'ai essayé de faire appel à DrawThread() Invoke mais cela a échoué, donc ce n'est pas sur le thread principal. Étant donné que c'est son propre thread, cela ne veut-il pas dire qu'il ne peut pas être sur le thread principal? – reza
Veuillez indiquer le code pertinent où vous appelez 'DrawThread' – ssantos