2010-07-26 2 views
9

Я попытался с помощью этого кода, чтобы запустить несколько деятельности из родительской деятельности:Android: Можно запустить несколько экземпляров Activity в одной и той же задаче?

for (int i=0; i<NUM_ACTIVITIES; i++) 
{ 
    Intent intent = new Intent(this, MyActivity.class); 
    startActivity(intent); 
} 

Однако, по моему войти в MyActivity.onCreate(), только 1 активность была фактически создана. Ожидается ли такое поведение? Если да, то каков правильный способ запуска нескольких видов деятельности?

+0

действительно интересный вопрос. – anticafe

ответ

9

Вы не можете одновременно выполнять несколько действий сверху. Вы пытаетесь заставить их работать в порядке, один за другим?

Один из способов сделать это, чтобы начать каждый вид деятельности результата:

Intent intent = new Intent(this, MyActivity.class); 
startActivityForResult(intent, 0); 

Где вы используете код запроса для отслеживания, когда активность работает. Тогда, в onActivityResult вы можете начать следующий:

protected void onActivityResult (int requestCode, int resultCode, Intent data) { 
    if (requestCode < NUM_ACTIVITIES) { 
    Intent intent = new Intent(this, MyActivity.class); 
    startActivityForResult(intent, requestCode + 1); 
    } 
} 

Edit: Если вы хотите, чтобы некоторые из мероприятий, немедленно в фоновом режиме, вы можете приковать их вместе по телефону startActivity в OnCreate каждого вида деятельности в. Если вы начнете новую активность в onCreate перед созданием любых видов, активность никогда не будет видна.

protected void onCreate (Bundle savedInstanceState) { 
    int numLeft = getIntent().getIntExtra("numLeft"); 
    if (numLeft > 0) { 
    Intent intent = new Intent(this, MyActivity.class); 
    intent.putExtra("numLeft", numLeft - 1); 
    startActivity(intent); 
    } 
} 

Это должно выполнить стек, что вы хотели ..

+0

В чем причина того, что несколько экземпляров Activity не могут быть сверху одновременно? Я не знаком с этим ограничением/ограничением Android ... – zer0stimulus

+0

Возможно, вы захотите прочитать документацию по жизненному циклу активности: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle There представляет собой стек активных действий, но видна только верхняя (за исключением в случае диалогов, но тогда все еще только одна активна). Я бы не считал это ограничением ... может быть, вы можете объяснить, какое поведение вы пытались выполнить, сразу запустив несколько действий? –

+0

Это скорее эксперимент, чтобы проверить мое понимание деятельности. Я думал, что новый экземпляр Activity запускается по умолчанию через 'startActivity()', и если я запустил 3 намерения, будут созданы 3 новых объекта Activities - 2 в фоновом режиме и 1 на переднем плане. – zer0stimulus

Смежные вопросы