所以我有一个菜单屏幕活动,它像这样调用其他活动
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 的屏幕上工作?有谁知道我为什么要这样做?解决此延迟的更好方法是什么?
编辑:我只是在播放后从视图切换器中删除了视频视图。彻底解决了问题。