そのため、バックグラウンドでの作業にスレッドを使用して、Android で Delphi XE-8 を使用しています。そして、メインスレッドからクロックのラベルを更新するタイマーがあります(おそらく、これを行うより効率的な方法があります)。
Androidでアプリを起動すると、時計の文字がランダムにサイズが縮小されたり、文字があるべき場所の上または下に配置されたりします。これは、アプリの存続期間中に同じキャラクターに対して発生します。アプリを閉じて再起動すると、別のキャラクターになる可能性があります。多くの場合、数値は指数のサイズを持ち、文字がまったくない場合もあります。また、バグがまったく表示されない場合もあります... 4 ~ 5 回に 1 回発生します。
下の図では、'5' がラベルの途中に配置されており、2 は表示されていません (表示されているラベルの上または下にある可能性があります)。
時計のコードは次のようになります。
procedure TPage0Form.ClockTimerTimer(Sender: TObject);
begin
ClockTimer.Interval := 1000;
Page0Form.lb_Clock.Text:= ( TimeToStr(Time));
end;
だから私は複数のことを試しました。1. 時計をスレッドに配置し、同期呼び出しを使用して UI を更新します。2. ラベルの代わりにビットマップを使用します (同じ問題)。3. ラベルの設定、labelsize、textsize、fonts、textAlignment、margins、padding などをいじってみます。しかし、すべて役に立ちません。
必要なプロセッサを搭載した複数の Android デバイスを使用していますが (一部はそうでないものもあります)、すべてのデバイスでバグが発生します。
論理的な説明 (根本的に間違ったことをしている) と、この問題を解決する方法はありますか?
お時間とご尽力いただきありがとうございます。
編集:これはXE6およびXE7でも発生します... Edit2:私も使用してみました:
FMX.Types.GlobalUseGDIPlusClearType
FMX.Types.GlobalUseDirect2D
FMX.Types.GlobalUseGPUCanvas
どれも状況を改善しませんでした。