8

インテントフラグと誤解しているようです。私はラジオを持っていますストリーミングアプリケーションには、2つのアクティビティ(PlayerApplicationとSettingsScreen)があります。私は、通知を保持するバックグラウンドで実行されるStreamingのService.classを持っています(通知オーバーレイメニューとPlayerApplicationで再生を停止/開始できます)。ユーザーが通知をクリックすると、PlayerApplicationActivityは画面に戻ります。Android:PendingIntent通知からonCreate()を起動しない場合、アクティビティを画面に戻す

すべてが正常に動作し、ケースを期待しています。ユーザーはSettingsScreenActivityを開く - > NotificationOverlayMenuを開く - >通知でクリック - > PendingIntentは今PlayerApplicationActivity

に再開し、PlayerApplicationScreenがありますが、私は何かをクリックすることはできません。通知から再開すると、PlayerApplicationのonCreate()がトリガーされないことがわかります。しかし、レイアウトが正常に見える(も)(のonCreateに膨張)

私はService.classにPendingIntentを次のように使用:

PendingIntent contentIntent = PendingIntent.getActivity(
     this.getApplicationContext(), //Service.class 
     0, 
     new Intent(this,PlayerApplicationActivity.class) 
      .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_ACTIVITY_SINGLE_TOP), 
     0); 

だから、実際に(すでに実行している場合)PendingIntentはバックに活動を持参してくださいトップ。誤ったインテントを使用しているのですか、またはポイントがありませんか?あなたが呼び出しているアクティビティのインスタンスがすでに実行されている場合は、SingleTask

EDIT: と私はFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOPではと起動モードでは、AndroidデベロッパーsiteによるたManifest.xml

android:launchMode="singleTask" 
+1

<application-node>にlaunchModeを宣言singleTopないsingleTask

  • です既に実行中です。あなたは 'onCreate'の代わりに' onNewIntent'コールバックを受け取ります –

  • 答えて

    1

    私はちょうど私が間違って何をやっていた考え出し:私の目的のために

    1. 私が間違っlaunchModeを使用。あなた `Activity`ためlaunchMode = "singleTask" を`と:右の一つは、私はあなたが `アンドロイド宣言しているので、代わりに<activity-node>

      //Manifest.xml 
      <activity 
          android:name="..." 
          android:launchMode="singleTop" > 
      
    6

    でlaunchModeを宣言しました新しいインスタンスを作成する代わりに、onNewIntent()メソッドを呼び出します。だから私はonCreate()が呼び出されていないときにあなたのアクティビティが実行されているこの状態をチェックする必要があると思います。

    +0

    OMG!すべての私の研究は最終的に何かをもたらします!!ありがとうございました!私の言うことを聞いて... onNewIntent()をオーバーライドし、onCreateメソッドでやったことをやってください!!!!!!! –

    +0

    ロングライブマン私はこの日のお世話に感謝しました。 –

    関連する問題