1

所以我有一个菜单屏幕活动,它像这样调用其他活动

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() 除了设置 onclick 侦听器什么都不做。编辑:在 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 的屏幕上工作?有谁知道我为什么要这样做?解决此延迟的更好方法是什么?

编辑:我只是在播放后从视图切换器中删除了视频视图。彻底解决了问题。

4

0 回答 0