2017-04-25 44 views
0

興味深い問題が残っています:Theme.NoDisplay(UIなし)のランチャータイプのアクティビティがあり、いくつかの条件によって異なるアクティビティを起動する必要があります。 startActivity()を呼び出すと、アプリがランチャーアイコン(起動してLauncherActivityを起動しますが、エラー/例外なしで終了した場合)で起動された場合は起動しません。ランチャータイプのアクティビティから別のアクティビティを開始できません

もつとも

私はADB経由LauncherActivityを開始するか、それだけで正常に動作するようですstartActivity()に遅延を追加しています。

ここにコードスニペットがあります。

public class LauncherActivity extends Activity { 

private Handler handler = new Handler(); 
private SharedPreferences preferences; 

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

    preferences = getSharedPreferences(App.getContext().getString(R.string.preferences_name), MODE_PRIVATE); 
    int pesel = preferences.getInt(App.getContext().getString(R.string.pref_pesel), 0); 
    String password = preferences.getString(App.getContext().getString(R.string.pref_password), ""); 

    Intent intent; 

    if (pesel != 0 && !password.isEmpty()) { 
     // TODO: server-side password check 
     intent = new Intent(this, MainActivity.class); 
    } else { 
     intent = new Intent(this, RegisterActivity.class); 
    } 

    Intent startIntent = getIntent(); 
    intent.setAction(startIntent.getAction()); 
    intent.setFlags(startIntent.getFlags()); 
    if (startIntent.getExtras() != null) 
     intent.putExtras(startIntent.getExtras()); 

    final Intent readyIntent = intent; 

    /* 
    THIS DOENS"T WORK (WORKS IF STARTED VIA ADB THOUGH) 
    */ 
    startActivity(readyIntent); 

    /* 
    THIS HOWEVER DOES WORK (ALWAYS) 
    */ 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      startActivity(readyIntent); 
     } 
    }, 5000); 

    finish(); 
} 

}

+0

マニフェストを教えてください。 – t0mm13b

答えて

0

私は実際にソリューション自分自身を発見しました。

this blog post私はfinish()の前にonResume()Theme.NoDisplayのアクティビティを呼び出す必要がある理由を説明していました。

私はこのような何かをしたし、動作するように思われる私の問題を修正するには、次の

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if (isFinishing() && intent != null) { 
     startActivity(intent); 
    } 
} 

残念ながら、私は明確な説明理由を持っていないが、私はとにかくそれをここに残しておきます、誰かを助けるかもしれません。

関連する問題