Как уменьшить или удалить задержку при запуске действия Android с помощью нажатия кнопки

#java #android #performance

#java #Android #Производительность

Вопрос:

Я давно заметил эту проблему. Когда я открываю действие с помощью кнопки, я чувствую небольшую задержку перед запуском действия «STARTS», например, на 1 секунду, даже если оба действия пусты, как будто это намеренная задержка.

Каждый другой поток StackOverflow, который я проверил относительно этого, имеет какую-то нагрузку, которая замедляет его. Но это просто пусто, без нагрузки или фоновых задач.

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

Медленно ли тестируемое устройство? Я не думаю, что это так.

  1. Я тестировал на виртуальной машине Android 10 (задержка 1 секунда),

  2. Android 9, 8, 7, 6, 5.1, 5 VM (задержка 1 секунда),

  3. Nokia 1 Plus (медленный) с Android 10 и 9 (задержка 1/2 секунды),

  4. Nokia 5.1 с Android 9 (задержка 1/4 секунды),

  5. Galaxy s6 Edge с Lineage 16 (Android 9) и Android 7.0 без задержек,

  6. Galaxy s5 Lineage 15 (Android 8), Lineage 14 (Android 7), Stock 6.0 (задержка 1/8 секунды),

  7. Galaxy m31, m21 и A51 с Android 9 One UI1? (задержка в 1/2 секунды),

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

Android Studio 4.0

Есть идеи о причине?

Код MainActivity:

 public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
    public void Onclick(View view){
        startActivity(new Intent(this,MainActivity2.class));
    }
}
  

MainActivity activity_main:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@ id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="Onclick"
        android:text="Open Activity 2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
  

MainActivity2

 public class MainActivity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    }
}
  

MainActivity2 activity_main2:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity2">

</androidx.constraintlayout.widget.ConstraintLayout>
  

Комментарии:

1. пожалуйста, поделитесь также своим манифестом приложения.

2. Как вы измерили задержку открытия активности? Возможно, добавление журналов было бы более точным.

3. Еще одна вещь, которую я бы посоветовал, это перейти к параметрам разработчика и проверить Window animation scale и Transition animation scale в Drawing разделе. Возможно, их отключение немного ускорит процесс. Некоторые задержки являются побочным эффектом анимированного пользовательского интерфейса с переходами.

4. Попытался установить его на 1.0, 0.5 и выкл. не имеет значения. отключение делает его хуже для обычного пользователя.

5. Вы пробовали экспериментировать с другими представлениями? Отличается ли это, если вы используете TextView вместо кнопки? Вы уверены, что это не имеет никакого отношения к кнопке конкретно?

Ответ №1:

Вы можете попробовать профилировщик Android, чтобы отслеживать / исследовать это подробнее. Но с общей точки зрения, не должно быть никакой задержки при запуске действия с простым макетом. Другие вещи, которые могут повлиять на задержку, — это доступность ресурсов устройства. Итак, если ваш код совпадает с тем, который вы упомянули в своем вопросе, задержка должна быть вызвана производительностью устройства.

Комментарии:

1. обычно я перезагружаю устройство перед отладкой. я убедился, что устройство находится в максимально быстром состоянии. Однако другие системные приложения кажутся более отзывчивыми. несмотря на то, что они являются системными приложениями, они по-прежнему являются apk, написанными на java и kotlin. Я только ищу способ сделать его более отзывчивым.