Переключение между действиями очень медленное - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь создать кнопку, которая меняет активность на экране. Это меняет деятельность, как задумано, но это немного медленно. Изменение происходит с задержкой в ​​одну секунду. В то время как эта задержка происходит, я могу использовать кнопку во второй раз, если вы выполняете это действие, открывается дважды. Но вот интересная часть: кнопка второго действия, которая открывает первое, не имеет этой проблемы, потому что она использует функцию finish ().

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

Редактировать: я решил проблему с мультикликом. Я отключил кнопку после щелчка, пока пользователь не вернется к основному виду деятельности. Я обновил код, чтобы показать, какие коды я использовал для его решения. Но у меня все еще есть проблема "медленного переключения активности".

Моя основная активность:

public static Button button_start;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    button_start = findViewById(R.id.button_start);
    configureStartButton();
}
@Override
protected void onResume()
{
    super.onResume();
    button_start.setEnabled(true);
}

private void configureStartButton() {
    button_start.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            button_start.setEnabled(false);
            startActivity(new Intent(MainActivity.this, SettingsActivity.class));
        }
    });
}

НастройкиActivity (Второе действие):

private Button button_menu;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);

    button_menu = (Button) findViewById(R.id.button_menu);
    button_menu.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            finish();
        }
    });
}

1 Ответ

0 голосов
/ 10 мая 2019

Если вы используете RxJava, вы можете использовать метод debounce (), чтобы избежать нескольких кликов.

или

Отключить кнопку на очень короткое время после нажатия кнопки

long TIME = 1 * 1000;
button_start.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
           button_start.setEnabled(false);
           new Handler().postDelayed(new Runnable() {
               @Override
               public void run() {
                  button_start.setEnabled(true);
               }
           },TIME);
           startActivity(new Intent(MainActivity.this, SettingsActivity.class));
        }
    });
...