0

私が開発しているアラームアプリでいくつかの問題が発生しています。

私が最初に少し奇妙だと思うのは、アラームが鳴って電話が目覚めたときです。これらのことが起こりました。

oncreate
onresume
onpause
onresume

なぜその順序で実行されるのですか?最後の2つは呼び出されるべきではありませんか?そして、これが大きな問題の原因です。電話でホームまたはバックを押すと、onPauseが実行され、そこからfinish()を呼び出したいからです。そして、その部分は正常に機能しますが、onPause 呼び出しのために電話がスリープ状態から復帰すると機能しません...

何か案は?

4

3 に答える 3

1

同様の問題もあります。バックグラウンドでアクティビティとサービスを作成します。サービスがネットからデータを受信すると、アクティビティが開始されます。onStop フェーズでのアクティビティと画面が黒くなるまで、すべてが正常に機能します。この状況でアクティビティの再開をリクエストすると、次のようになります。

onRestart onStart onResume onPause onNewIntent onResume

ご覧のとおり、onResume、onPause、および別の onResume があり、アクティビティがユーザーに届きました。

これは、singleTop または singleInstance アクティビティを使用しているためと思われます (singleTask にも表示される可能性があります)。問題は、既に作成された singleTop アクティビティにインテントを送信すると、新しいインテントが onNewIntent() メソッドをアクティブにすることです。API から次のことがわかります。

アクティビティは、新しいインテントを受け取る前に常に一時停止されるため、このメソッドの後に onResume() が呼び出されることを期待できます。

これが onResume-onPause-onResume 呼び出しを受け取る理由かもしれません。

しかし、これは奇妙な動作です。

于 2011-01-07T18:43:46.000 に答える
0

onPause()で本当にfinish()を呼び出しますか?onPause()は、現在のアクティビティがフォアグラウンドにないときに呼び出されます。代わりに、onStop()メソッドでfinish()を呼び出したい場合があります。詳細については、を参照しActivity lifecycleてください。

于 2010-10-04T09:43:42.813 に答える
0

公式のアラーム アプリケーションがイベントを処理する方法を確認することをお勧めします: https://android.googlesource.com/platform/packages/apps/DeskClock

于 2010-10-04T09:49:23.603 に答える