2017-01-09 4 views
0

Я хотел бы вручную проверить, что приложение для Android, которое я пишу, корректно работает при паузе. Что я могу сделать с помощью графического интерфейса Android, чтобы вызвать метод onPause(), который будет вызван, не вызывая при этом onStop()?Как я могу вручную запустить мой Android onPause() метод для его проверки?

Я попытался вывести панель уведомлений и получить телефонный звонок, но ни один из них не вызвал onPause().

Я хотел бы найти не-программное решение, которое работает для нескольких версий Android через графический интерфейс с телефонами или без них, потому что я преподаю класс, полный студентов, использующих разные устройства.

Обратите внимание, что я не спрашиваю, как сообщить , если мой метод onPause(). Я спрашиваю, что я могу сделать, чтобы вызвать его, без изменения моего приложения.

+2

Вы можете использовать журналы для этого. –

+0

у вас может быть снэк-бар или тост-сообщение. –

+0

@santoshkumar Да, я могу показать ему тост, но мой вопрос в том, что я могу сделать, что вызовет метод onPause(), а не как проверить, был ли этот метод вызван. Я постараюсь сделать это яснее. –

ответ

1

Я нашел решение. Я получил идею из картины в книге Head-First Android Development.

  1. Установить Any Do.
  2. Создать задачу.
  3. Установите будильник в течение нескольких минут в будущем.
  4. Запустите приложение под тестированием.
  5. Когда появляется предупреждение, мое приложение частично закрывается, и его метод onPause() вызывается. Если я нажму на значок Dismass, мое приложение возобновится без вызова метода onStop().

Picture showing app partly obscured by Any Do alert

0

Вы можете назвать это программно.

Или просто начните с намерения другой деятельности.

+0

Спасибо, но я хотел бы сделать это без изменения тестируемого приложения. –

+0

Как вы хотите, но это должно помочь вам протестировать его. Если бы я был вами, я бы добавил небольшую кнопку внизу справа, чтобы через OnClick вызывать начало демонстрационной активности. – omriherman

0

Это может быть один из способов сделать это в приложении.

@Override 
    protected void onPause() { 
     super.onPause(); 
     Toast.makeText(this, "Paused", Toast.LENGTH_SHORT).show(); 
     finish(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     Toast.makeText(this, "stopped", Toast.LENGTH_SHORT).show(); 
    } 

Другой способ, которым вы имеете, - открыть любое действие/применение с использованием намерений.

+0

Спасибо, но я хотел бы знать, как вызвать вызов метода onPause(), а не как определить, вызван ли он. –

+0

у вас есть квадратная кнопка на Android-телефоне, которая используется для push-приложения в фоновом режиме, когда приложение не видно, что это приведет к состоянию паузы –

+0

вы можете открыть Второе действие из первого в этом случае первая активность перейдет в фоновый режим, а второй появится onPause первого вызова b. –

0

В соответствии с документацией приостановленное состояние происходит, если действие потеряло фокус, но все еще видно (то есть, новая не полноразмерная или прозрачная активность фокусируется на верхней части вашей активности), она приостанавливается. Приостановленная активность полностью живая (она поддерживает всю информацию о состоянии и членах и остается прикрепленной к оконному менеджеру), но может быть убита системой в ситуациях с крайне низкой памятью.

Следовательно, если вы посещаете звонок, очевидно, что ваш экран вызова поступит в стек, и он вызовет onStop() ранее запущенного действия.

Так что, если вы хотите, чтобы только вызываемый onPause() вызывался, вам следует открыть новую не полноразмерную или прозрачную активность.

+0

Можете ли вы порекомендовать легкодоступную не полноразмерную или прозрачную деятельность и как я могу начать ее без программно, не переходя от тестируемого приложения и вызывающего его метод onStop()? –

+0

Самый простой вариант - получать уведомление от другого приложения, когда ваше текущее приложение открыто. Например, скажем, если вы звоните на свой телефон, где работает ваше приложение, или скажите, что вы получаете уведомление whatsapp. Затем вызывается onPause(). После того как вы откроете уведомление, будет вызываться onStop. Но только с уведомлением вызывается onPause(). –

+0

Спасибо. Я закончил делать что-то подобное. –

0

Вы можете создать оповещение диалог для вызова onPause() без вызова onStop().

Но важным моментом является создание диалогового окна оповещения в качестве активности.

Это может быть сделано следующим образом:

Создать новый класс activty под названием диалог расширения AppCompatActivty, а также добавить его в AndroidManifest.xml, как показано:

public class dialog extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //set appropriate layout 
     setContentView(R.layout.activity_main); 
    } 
} 

Добавить в AndroidManifest.xml:

<application> 
.... 
    <activity 
       android:name="dialog" 
       android:theme="@style/Theme.AppCompat.Dialog"></activity> 
</application> 

Добавить следующее в onCreate() метод MainAc tivty.java:

button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(getApplicationContext(), dialog.class); 
       startActivity(intent); 
      } 
     }); 
+0

Спасибо, но часть моей цели состояла в том, чтобы не нужно было модифицировать тестируемое приложение. –

+0

Насколько я знаю, существует два метода для достижения этого - путем креатина в диалоговом окне оповещения или путем запуска новой прозрачной деятельности над существующей деятельностью, для которой оба требуют изменения кода. Если вы просто нажмете любую из аппаратных кнопок (назад, домой или обзор) на устройстве, это будет выглядеть как onPause(), так и onStop(). – sats

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

  • Нет связанных вопросов^_^