0

私のアプリはNotificationからを作成しIntentServiceます。タップするとタイプのNotificationが開きます。のインスタンスがすでに作成されているかどうかに関係なく、 new がタップされるたびにメソッドが呼び出されます。常にタップすると、古いインスタンスを置き換える新しいインスタンスが作成されます。MainActivityActivityMainActivity's onCreate()NotificationMainActivityNotification

onCreate() アクティビティが存在しない場合にのみ呼び出し、たとえば既に存在する場合 (または別の適切なメソッド)onNewIntent()を呼び出す方法はありますか?MainActivity

Notificationは現在、次のように作成されています。

    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(com.exampleapp.myclient.R.drawable.dummy_notification_icon, "Notification!", System.currentTimeMillis());
    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
    notification.setLatestEventInfo(context, notificationTitle, "test", pendingIntent);
    notificationManager.notify(1, notification);

MainActivityマニフェストで:

<activity android:name="com.exampleapp.myclient.MainActivity"  
    singleTop="true">
 </activity>
4

2 に答える 2

3

singleInstanceアプリケーションの場合と同様にアクティビティを設定できますmanifest。アクティビティが再度起動されると、onCreate()メソッドは呼び出されず、代わりにonNewIntent()呼び出されます。次に何をするかを決めることができます。

于 2012-12-05T09:02:44.283 に答える
2

マニフェストでandroid:launchmode属性を探しているだけです。あなたの場合、に設定する必要がありますsingleTask。その後、を処理できるようになり、onNewIntent();インスタンスは 1 つだけになります。

于 2012-12-05T09:11:27.533 に答える