用户返回活动时 Videoview 未启动
Posted
技术标签:
【中文标题】用户返回活动时 Videoview 未启动【英文标题】:Videoview not starting when the user comes back to activity 【发布时间】:2012-07-04 19:19:49 【问题描述】:我正在启动一个项目,我想在应用执行时在主 Activity 中重现视频,当用户按下视频时,它会转到另一个 Activity。如果用户按下后退按钮,他将再次进入主屏幕并从头开始再现视频。该视频位于原始目录中。
问题是视频视图在第一次创建活动时正在再现视频,但在用户从其他活动(在我的情况下是 MenuSection 活动)返回到它时却没有。代码真的很简单,但我还是会粘贴它:
public class MainActivity extends Activity
private VideoView mVideoView;
LinearLayout menuSection;
@Override
public void onCreate(Bundle icicle)
super.onCreate(icicle);
setContentView(R.layout.main);
mVideoView = (VideoView) findViewById(R.id.surface_view);
mVideoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.documentariesandyou));
mVideoView.requestFocus();
mVideoView.setMediaController(null); //i dont want the controls of the videoview.
mVideoView.start();
menuSection = (LinearLayout) findViewById(R.id.menuSection);
menuSection.setOnClickListener(new menuSectionListener());
class menuSectionListener implements OnClickListener
public void onClick(View v)
Intent staticActivityIntent = new Intent(MainActivity.this, MenuSection.class);
startActivity(staticActivityIntent);
MenuSection 只是一个显示类似“Hello world”的文本视图的活动,所以我没有粘贴它。
【问题讨论】:
【参考方案1】:将mVideoView.start();
移动到onResume()
而不是onCreate()
为:
@Override
protected void onResume()
super.onResume();
mVideoView.start();
请参阅Managing the Activity Lifecycle onResume()
在 Activity 已运行时从您的 Activity 中调用
【讨论】:
onStart() 或 onResume() 都可以。但我发现使用 onResume() 有时会导致视频重新启动,但至少在我自己的视频应用程序中是这样的。 谢谢,这个问题真的很简单。但是我对android有点陌生,我已经习惯了活动和东西的所有过程。非常感谢!【参考方案2】:在您的活动的onPause()
覆盖的方法上调用video.pause()
,并在您的活动的onResume()
方法上调用video.resume()
。
【讨论】:
【参考方案3】:将mVideoView.start();
移动到onStart()
,而不是onCreate()
。
请参阅开发者文档中的Activity Lifecycle,了解有关活动生命周期如何工作的更多信息。
我不确定,但您可能还需要将 setVideoURI();
移动到 onStart()
。
【讨论】:
在这种情况下 onStart() 有什么帮助? @imrankhan 因为只有当 Activity 不在内存中时才会调用 onCreate() 。 onStart() 在活动显示在屏幕上之前被调用,在这种情况下,当用户从其他地方导航回它时。以上是关于用户返回活动时 Videoview 未启动的主要内容,如果未能解决你的问题,请参考以下文章
Android - VideoView 需要按两次 BACK 才能退出