2012-07-02 3 views
2

Деятельность GameActivity: Страница, открытая, когда приложение открыто. Активность GameMain: Игра в игру. активность GameWin: Переводы на следующий GameActivity (в конечном счете, будет иметь экран «Вы выиграли!», Со статистикой и вещами)Изменение деятельности: Перезагрузка деятельности, замедление - почему это?

  1. приложение запускается
  2. Это срабатывает:

    button = (Button) findViewById(R.id.button1); 
    
    button.setOnClickListener(new OnClickListener() { 
    
        public void onClick(View arg0) { 
         Intent intent = new Intent(context, GameMain.class); 
         intent.putExtra("level",1); 
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(intent); 
         finish(); 
        } 
    
    }); 
    
  3. GameMain теперь загружен. Символ, circle, теперь находится в левой части экрана.

  4. Когда circle попадает в правой части экрана, это, если утверждение в моей игре петли теперь становится правдой:

    if ((circle.x+width/2 > end.startx) && (circle.x-width/2 < end.stopx) && (circle.y+circle.size==end.starty-width/2)) { 
          layout.removeAllViews();  
          Intent intent = new Intent(context, GameWin.class); 
          intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
          intent.putExtra("level",level); 
          finish(); 
          startActivity(intent); 
        } 
    
  5. GameWin экран делает это:

    Log.v(TAG,"Goint to level: "+(level+1)); 
        Intent intent = new Intent(context, GameMain.class); 
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        intent.putExtra("level",(level+1)); 
        startActivity(intent); 
        finish(); 
    
  6. Иногда это работает, и идет к GameMain с данными уровня как 2, только значительно медленнее, чем если бы я прошел через экран уровня и прямо на level2. Иногда он работает и переходит на GameMain с данными уровня как 2, и перезагружает страницу снова и снова. Иногда мой телефон перезапускается.

  7. Если у меня есть способность завершить уровень 2, я делаю это. Уровень 3 еще медленнее, если он работает, или обновляет, или перезагружает телефон.

  8. Если я нажимаю «Home» в любое время, он идет на мой домашний экран, но приложение открывает себя назад к GameMain с последнего уровня (обратно к шагу 6 или 7).

Что я делаю неправильно?

Уровень API 8, LG P500 (2.3.3)

Оказывается, это не было проблемой. Игровой цикл все еще работал в фоновом режиме.

+0

Если кому-то нужна дополнительная информация, попросите его здесь, и я отредактирую основное сообщение. –

ответ

0

Оказалось, что это было лишь частично вопросом намерения; основная проблема заключалась в том, что я не останавливал галлуп.

Когда гаметоп остановился, все сработало нормально.

0

Вот 2 вещи, чтобы попробовать:

  1. В GameMain, убедитесь, что вы называете startActivity(intent) перед тем finish()
  2. Добавить noHistory к деятельности в манифесте и установить истинного

Редактировать Вы должны приступить к добавлению операторов регистрации в свои функции и обратные вызовы. Это покажет вам, что работает, и дайте вам информацию о времени, в течение которого он длится.Пример:

onCreate(){ 
    Log.i(TAG, "onCreate++"); 
    super.onCreate(); 

    //other code here 

    Log.i(TAG, "onCreate--"); 
} 
+0

Не решил. –

+0

Начните добавлять в заявления о регистрации, вы никогда не ошибетесь, начав с высокого уровня просмотра того, что вызвано в вашем приложении. –

+0

Я использовал Intent.FLAG_ACTIVITY_NO_HISTORY, который работает до сих пор, но из моего ведения журнала кажется, что действия просто не закрываются, даже с финишем(). Почему это? –

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