0

アプリにタイマーがあり、アプリがバックグラウンドで実行されているように見せたいです。タイマーが表示されているときにユーザーがホームボタンを押して、一瞬「01:11:11」になり、アプリに戻ると、10分後にタイマーが表示されるようになり、タイマーが「01」と表示されます。 :01:11」ですが、正しい時間から更新を開始する前に、アプリがバックグラウンド (「01:11:11」) に移行したときの最後の状態を示す一瞬が表示されます。

「applicationDidBecomeActive」でタイマーの状態を更新することでこれを修正できると想定しましたが、Xcode のシミュレーターでは機能しましたが、Ipad では機能しませんでした。

私は自分の描画に cocos2d を使用しています。これが私の applicationDidBecomeActive で行っていることです。

CCScene *s=[director_ runningScene];
GameLayer *l=[(GameLayer*)[s getChildByTag:GAME_LAYER_TAG];
if (l!=nil) [l myUpdate]; 

myUpdate が呼び出されるため、問題に関連しているとは思いませんが、何があっても最後の状態から再開するかのように、Ipad にはまだ一瞬の不具合があります。

4

2 に答える 2

1

リンゴの時計アプリでは、applicationDidEnterBackground でタイマー テキストを非表示にするため、アプリがフォアグラウンドになると、アプリが UI に新しいタイマー データを読み込んでいる一瞬だけ空白の UI が表示されます。また、最初に呼び出される applicationWillEnterForeground で applicationDidBecomeActive コードの一部を呼び出すこともできます。ただし、アプリの初回起動時には applicationWillEnterForeground が呼び出されないことに注意してください。

アプリがフォアグラウンドになってから UI が更新されるまでには、常に遅延が発生します。それを修正する方法はないので、アップルが使用しているものを使用して問題を回避することもできます。

于 2013-06-04T13:05:01.817 に答える
0

さて、applicationWillResignActive と applicationDidEnterBackground の両方で UI を非表示にしようとしました。applicationWillResignActive が最初に呼び出され、プレビューに入る前に (HOME をダブルクリック)、「それほどきれいではない」プレビューが表示されますが、少なくとも元の問題は解決すると思いました。そうではありませんでした(私のiPadではそうではありませんでした)。applicationWillResignActive の前でも、システムがスクリーン ショットを撮っているようです。

公式の時計アプリでタイマーを確認したところ、アプリがバックグラウンド(プレビュー中)にある場合でも時計が更新されているため、とにかく「チート」しています...

于 2013-06-04T14:47:15.890 に答える