Кнопка возврата занимает слишком много времени, чтобы вернуться назад. Возможные причины? - PullRequest
1 голос
/ 18 мая 2011

Итак, у меня есть экранное меню, которое вызывает другие действия, например:

option = new Intent(getApplicationContext(), OptionsScreen.class);  

...  

startActivity(option);

Этот экран настроек пока ничего не делает. точнее, это:

public class OptionsScreen extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.options);
    Toast.makeText(OptionsScreen.this, "options", Toast.LENGTH_SHORT).show();
}

И это целая деятельность на данный момент. Я называю другие действия подобным образом. Когда я выполняю ответный удар, для возврата к экрану меню последовательно требуется 5 секунд. Это не займет много времени, так как OnResume () ничего не делает, кроме как настраивает прослушиватели по щелчку. редактирование: на эмуляторах MOTODEV он зависает (может быть другая проблема), а на базовом эмуляторе Android он работает так же, как на телефоне (5 секундная задержка).
возможно уместно - когда экран меню сначала вызывается, он воспроизводит 5-секундное видео, а затем использует ViewSwitcher для перехода в меню. это видео воспроизводится только при первом запуске приложения.

Каковы возможные причины такой задержки? Любые идеи будут высоко оценены.

РЕДАКТИРОВАТЬ: ниже приведен код из функции OnCreate (), которая воспроизводит видео. Я фактически удалил это, и это не исправило задержку, но я отправлю это так или иначе.

VideoView logo;
...

logo.setVideoURI(Uri.parse("android.resource://COM.PRACTICE/" + R.raw.logoanimation2));
    logo.requestFocus();
    logo.start();
    logo.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
            mHandler.removeCallbacks(UpdateTimeTask);
            mSwitcher = (ViewSwitcher) findViewById(R.id.viewSwitcherMenu);
            mSwitcher.showNext();
            menushown = true;
            logo.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                };
            });
        }
    });

РЕДАКТИРОВАТЬ: хорошо, поэтому, когда я положил "mSwitcher.showNext ();" в начале OnResume он возвращается без задержки и воспроизводит видео снова. Я думаю, что-то нужно сделать, чтобы мгновенно показать правильный вид в viewSwitcher? Кто-нибудь знает, что это такое?

РЕДАКТИРОВАТЬ: Я частично решил эту проблему. Задержка исчезла для 2/3 действий, которые я запускаю с нее. Я сделал это странным образом, и я все еще хотел бы понять это лучше. Я добавил следующий код в Onresume ():

if (menushown) {mSwitcher.showNext(); mHandler.postDelayed(ViewSwitcherTask, 100);}

и затем добавьте это в класс активности:

Runnable ViewSwitcherTask = new Runnable() {
    public void run() {
       mSwitcher.showNext();
    }
 };

Простой вызов showNext () дважды не сработал, и ничего другого я не пробовал. Это явно не идеальное решение. Почему это работает на 2/3 моих экранов? Кто-нибудь знает, почему я должен был это сделать? Как лучше исправить эту задержку?

EDIT: я просто удалил видеовид из переключателя вида после его воспроизведения. Исправлена ​​проблема полностью.

...