3

カスタム URL を作成してリッスンするアプリを作成しました。私の問題は、アプリの複数のインスタンスです。たとえば、URL を作成し、それを SMS で友人に送信します。その後、アプリでその SMS (URL を含む) を開きます。これにより、この URL を開くアプリの新しいインスタンスが作成されます。一度に 1 つのインスタンスのみが存在する必要があります。どうすればこれを達成できますか。

ありがとう、

4

3 に答える 3

3

タグやマニフェスト ファイルに属性を追加して、次のいずれかに設定できandroid:launchMode=""ます。activity

  1. standard : システムは常にターゲット タスクでアクティビティの新しいインスタンスを作成し、インテントをそこにルーティングします。
  2. singleToponNewIntent() : アクティビティのインスタンスがターゲット タスクの先頭に既に存在する場合、システムは、アクティビティの新しいインスタンスを作成するのではなく、メソッドの呼び出しを通じてそのインスタンスにインテントをルーティングします。
  3. singleTask : システムは、新しいタスクのルートにアクティビティを作成し、インテントをそこにルーティングします。ただし、アクティビティのインスタンスが既に存在する場合、システムは、新しいインスタンスを作成するのではなく、その onNewIntent() メソッドを呼び出すことによって、インテントを既存のインスタンスにルーティングします。
  4. singleInstance : singleTask と同じですが、システムはインスタンスを保持しているタスクに対して他のアクティビティを起動しません。アクティビティは、常にそのタスクの唯一のメンバーです。
于 2013-02-25T10:21:41.593 に答える
2

URL を開くAndroidManifest.xmlandroid:launchMode="singleTop"の Activity に設定します。例えば:

<activity android:name="com.abc.MainActivity" android:label="app_name"
          android:launchMode="singleTop">

さらに、新しいものをキャッチしたい場合Intentは、アクティビティ コードで次のメソッドをオーバーライドします。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);   //set new intent as current intent
}
于 2013-02-25T10:20:28.547 に答える
0

に使用しandroid:launchMode="singleTask"てください。詳細については、アクティビティの LaunchModeに関するこのドキュメントを確認してください。ActivityAndroidManifest.xml

于 2013-02-25T10:25:39.720 に答える