当应用程序从后台进入前台时,onBackPress() 不起作用

Posted

技术标签:

【中文标题】当应用程序从后台进入前台时,onBackPress() 不起作用【英文标题】:onBackPress() is not working when app comes to foreground from background 【发布时间】:2020-05-23 16:40:11 【问题描述】:

我的活动中有一个 videoView。当应用程序从后台进入前台以及由于 videoView.seekTo(1) 而锁定我的手机并解锁它时,onBackPress() 不起作用。我们如何解决它

下面是我的代码。请帮忙

public class VideoPreviewActivity extends implements View.OnClickListener  

    TextView tv_response;
    ImageView iv_video_preview;
    VideoView videoView;
    @SuppressLint("ClickableViewAccessibility", "InlinedApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_preview);
        processIntent(getIntent());
    


    public void processIntent(Intent intent) 
        int is_doc_context = intent.getIntExtra(IS_DOC_CONTEXT, 2);
        if (is_doc_context == 1) 

            final MediaController mc = new MediaController(this);
            mc.setVisibility(View.GONE);
            mc.setAnchorView(videoView);
            mc.setMediaPlayer(videoView);
            final Uri video = Uri.parse(videoFileString);
            videoView.setMediaController(mc);
            videoView.setVideoURI(video);
            videoView.seekTo( 1 );

            videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
                @Override
                public void onCompletion(MediaPlayer mp) 
                
            );
         
    

    @Override
    protected void onResume() 

        videoView.seekTo( 1 );
        super.onResume();
    

    @Override
    protected void onPause() 

        if (videoView.isPlaying())
            videoView.stopPlayback();
        
        super.onPause();
    

    @Override
    public void onBackPressed() 
        LibUtils.onBackButtonClick(VideoPreviewActivity.this);
    

如果您需要任何信息,请告诉我。

【问题讨论】:

提供LibUtils.onBackButtonClick代码。 这是自定义警报对话框 移除 videoView.seekTo(1);从 onResume() 设置搜索位置设置行为 @PraveenSP 那么我如何为 videoView 显示 thumbNail。因为当应用程序从后台进入前台时,VideoView 上会出现黑屏 做一件事在 onPause() 和 onResume() 中保存 seekpos 并寻找保存 pos 的位置 .. 希望你得到我想在这里传达的内容...... 【参考方案1】:

在你的重写 onBackPressed() 方法中调用 super.onBackPressed()。

【讨论】:

这个我试过了。但不工作。问题是由于 onResume 中的 videoView,seekTo(1)【参考方案2】:

你没有为videoView打电话给findViewById

1) 确保在 xmlvideoView 中添加 id

<VideoView 
android:id="@+id/video_view"
android:layout_
android:layout_ />

2) 在onCreate() 中执行此操作:

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video_preview);
    processIntent(getIntent());

    //here find the video view
    videoView = findViewById(R.id.video_view);

3) 在您的onBackPressed() 中还有一件事:

   @Override
    public void onBackPressed() 
        LibUtils.onBackButtonClick(VideoPreviewActivity.this);
        //add this
        super.onBackPressed();
    

【讨论】:

以上是关于当应用程序从后台进入前台时,onBackPress() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序从后台进入前台时,UITableViewCell 中的 UIButton 不保留图像?

当应用程序进入后台时,在前台执行的长时间运行的任务被挂起

Android需要事件前台和后台

当 iphone 应用程序进入后台或前台状态时,如何保存数据?

当应用程序进入暂停状态时取消本地通知。(从后台删除)

当应用程序进入后台和前台时,带有通知中心的登录屏幕,Swift