0

私のプログラムにはMainActivityとmyServiceがあります。

MainActivityは'singletop'、であり、MainActivityはクラスをオーバーライドしますonNewIntent

myServiceは「フォアグラウンド」サービスです。通知がポップアップします。通知にはIntent(this,MainActivity.class)、MainActivityを開始するためのpendingIntentがあります。

私のプログラムの流れは

アイコンから起動(開始)MainActivity(startService)myService(send broadcast)ブロードキャストclass(start MainActivity)onNewIntent@MainActivity

このフローのようにプログラムを起動すると、onNewIntentが正確に呼び出されます。

ただし、プログラムが通知から起動されると、onNewIntentが呼び出されることはありません。

通知から起動(start) MainActivity (startService) myService (send broadcast) broadcast class(start MainActivity)onNewIntent@MainActivity

4

1 に答える 1

0

http://developer.android.com/guide/topics/manifest/activity-element.htmlのガイドから

同様に、「singleTop」アクティビティの新しいインスタンスを作成して、新しいインテントを処理することもできます。ただし、ターゲット タスクのスタックの最上位に既にアクティビティの既存のインスタンスがある場合、そのインスタンスは (onNewIntent() 呼び出しで) 新しいインテントを受け取ります。新しいインスタンスは作成されません。その他の状況 - たとえば、"singleTop" アクティビティの既存のインスタンスがターゲット タスクにあるがスタックの一番上にない場合、またはスタックの一番上にあるがターゲット タスクにない場合 -新しいインスタンスが作成され、スタックにプッシュされます。

したがって、 onNewIntent は、アクティビティの既存のインスタンスがスタックの一番上にある場合にのみ呼び出されます。

于 2013-02-28T05:04:24.250 に答える