2017-07-26 10 views
0
<activity 
      android:name=".activity.landingpage.LandingPageActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTop" 
      android:screenOrientation="portrait" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

です。ランチャーアイコンからアプリケーションを開くと、起動します。アプリのアイコンをもう一度クリックすると、開いてからアプリケーションが前面に表示されます。ただし、プレイストアにアクセスしてそこからアプリを開くと2つのインスタンスが開いています。 どのように働いているかの例が必要な場合は、Facebookにも同じ問題があります。また、別のアプリfotmobも同じ問題を抱えています。プレイストアでアプリを再起動すると、

答えて

2

同じ問題がありました。あなたのランチャーに下のコードを入れてActivity

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    if (!isTaskRoot() 
       && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER) 
       && Intent.ACTION_MAIN.equals(getIntent().getAction())) { 
      finish(); 
      return; 
     } 
    //other code 
} 

問題:

は、タスクのスタックがあると、[A - > B - > C]およびAは、あなたがなりPlayストアタスクスタックからアプリケーション(システムを起動すると、ルートのアクティビティ、 です)[A]しかし、あなたがあなたのルートアクティビティスタックを終えたら、(システムはルートアクティビティの新しいインスタンスを作成し、既存のタスクのトップを作成します)[B - > C - > A]のようになります。

なぜですか?

アクション= MAIN、フラグ= ACTIVITY_NEW_TASK、フラグ= ACTIVITY_BROUGHT_TO_FRONT

ソリューション

、Playストアがカテゴリ=ランチャーでアプリを起動しますので、あなたのルートアクティビティを削除した場合を取り、スタックが[B - > C]の場合、スタックを[B - > C - > A]にすると、スタックは[B - > C - > A]になります。

今、Aはスタックのルートになく、カテゴリ=ランチャーそしてアクションは= MAINので、我々は(使用して仕上げを削除することができます)とスタックが同じまま[B - > C]

*注:アンドロイド7.0

+0

でテストあなたは、これが解決する理由について少し詳しく説明していただけません問題? – lelloman

+0

この回答ありがとうございます、それは手元の問題を解決しました。面白い部分は、アプリケーションの多くは、この特定のエラーがあります。彼らはここで解決策を使用することができます。 – user3278732

+0

いつも好きなAndroidのバグ:-(時間が明けてからまだ修正されていません。https://stackoverflow.com/a/16447508/769265 –

関連する問題