用户返回活动时 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 才能退出

从另一个活动返回后,VideoView 上的视频播放消失

启动新 Activity 时保持 VideoView 的状态

视频结束时调用下一个活动

如何刷新活动

如何使用 intent.putextra 设置 videoview 资源