Android: можно запустить несколько экземпляров действия в одной задаче? - PullRequest
9 голосов
/ 27 июля 2010

Я пытался использовать этот код для запуска нескольких действий из родительского действия:

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

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

1 Ответ

9 голосов
/ 27 июля 2010

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

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

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);
  }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...