2016-08-22 14 views
0

MainActivitylaunchModesingleTaskに設定していると、アプリケーションが間違った動作を再開します。私がMainActivityからActivityBを起動したら、アプリケーションをバックグラウンドに置き、アプリケーション画面からアプリケーションを起動しますが、正しく再開しません。 ActivityBが自動的に終了し、MainActivityが再開します。代わりにActivityBが再開すると思います。なぜこれが起こっていて、それを正常に動作させるために何ができますか?それはsingleTaskフラグなしで正常に動作しますが、私は他の目的のためにそのフラグが必要です。私のアプリで

ところで、私のアプリは最近のアプリの画面から正しく再開します。

+0

ActivityBのonPause()/ onResume()メソッドでfinish()を呼び出していませんか? –

答えて

0

ランチャーアクティビティで次のコードを使用します。アクティビティAは、(singleTask)再起動する必要があり、関連するすべてのインスタンスは/仕上げを殺すであろうので、それはアクティビティAから起動するので

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

if (!isTaskRoot()) { 
    finish(); 
    return; 
} 

// Rest of your onCreate code goes here 
} 
0

アクティビティBが閉じられ、これは、Androidのための正常な動作です。

だから、shared-preferenceを実装することができます。

アクティビティAは、次のようにする必要があります:

public class MainActivity extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //// read share preference 
    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
    int defaultValue = getResources().getInteger("MYSHARE_PRFERENCE"); 
    int isOpened = sharedPref.getInt("IS_ACTIVITY_B_ALREADY_OPENED", defaultValue); 

    if (isOpened == 1) 
    { 
     //resume activity B 
     startActivity(new Intent(MainActivity.this, ActivityB.class)); 
    }  
    //// 

    findViewById(R.id.text).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      startActivity(new Intent(MainActivity.this, ActivityB.class)); 

      //// write on share preference 
      SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = sharedPref.edit(); 
      editor.putInt("IS_ACTIVITY_B_ALREADY_OPENED", 1); 
      editor.commit(); 
      //// 
     } 
    }); 
} 

}

P.S:私はまだそれをコンパイルしていない、コードがコンパイルのエラーの可能性があります。しかし、共有優先度はあなたの問題の解決策になります。

+0

お手伝いをしていただきありがとうございますが、MainActivityからActivityBを開始しても再開しません。活動状態は失われます。明らかにこの問題には解決策がありません。この質問は既にここで尋ねられているhttp://stackoverflow.com/questions/2417468/android-bug-in-launchmode-singletask-activity-stack-not-preserved – Egis