2017-08-02 4 views
0

私はいくつかのアクティビティでアプリを持っており、ユーザーがデバイスランチャーのアプリアイコンをクリックするとアプリがランチャーアクティビティに移動して彼の新しいインスタンスを作成します 私はapkを生成するときだけです。 これはより明確にするシナリオです:アプリは、ユーザーがアプリアイコンをクリックしたときに新しいインスタンスを作成します

アクティビティA - >アクティビティB ユーザはアプリケーションを最小化し、ランチャのアプリアイコンをクリックすると、アクティビティAが新しいインスタンスを作成します。

これはAcitiviy A(あなたのランチャー活動)のonCreate(でこれを置く)で私のマニフェスト

<application android:name=".MyApp" 
android:allowBackup="false" 
android:fullBackupContent="false" 
android:icon="@mipmap/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme"> 
<activity android:name="com.myapp.ActivityA"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN"/> 
<category android:name="android.intent.category.LAUNCHER"/> 
</intent-filter> 
</activity> 
//More activities 
</application> 
+0

私はこれを数年前に見ましたが、それが問題であった場合、またはデバイス製造元のバグだった場合、またはAndroidバージョン固有の場合は忘れてしまいました。あなたはAndroidの別のデバイス/別のバージョンで試しましたか? – Blundell

+0

'onPause()'と 'onResume()'メソッドを使用していますか? –

答えて

2

です:あなたのランチャーの活動に

if (!isTaskRoot()) { 
final Intent intent = getIntent(); 
final String intentAction = intent.getAction(); 
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && 
intentAction.equals(Intent.ACTION_MAIN)) { 
    finish(); 
    return;  
} 
} 
+0

ありがとう、それは仕事です! – Yoni

0

は、マニフェスト

android:launchMode="singleTask" 
に追加します

または

android:launchMode="singleInstance" 
0

これは、API 1以降に存在していたバグです。特に、Androidで自分のスキンを使用しているSamsungなどのメーカーの場合は、主なアクティビティとしてアクティビティAがあり、アクティビティBを開いたとします。アプリを最小化し、ランチャーからアプリを再度開きます。 Androidはアプリのコールスタックの上にアクティビティAを開始します。したがって、新しいコールスタックはA→B→Aです。 回避策の1つは、初期アクティビティを開始するインテントでIntent.CATEGORY_LAUNCHERカテゴリとIntent.ACTION_MAINアクションをチェックすることです。これらの2つのフラグが存在し、アクティビティがタスクのルートにない場合(つまり、アプリケーションが既に実行されていることを意味します)、最初のアクティビティでfinish()を呼び出します。アプリのonCreate()でそう

、このような何か

if (!isTaskRoot() 
      && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER) 
      && getIntent().getAction() != null 
      && getIntent().getAction().equals(Intent.ACTION_MAIN)) { 

     finish(); 
     return; 
} 

これはあなたのために働くなら、私に教えてください。 :)

+0

私が答えを書いている間に誰かが投稿しました。 –

関連する問題