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