내 활동에 onPause가 있습니다. 그 이상한 점은 onPause가 두 번 호출되는 단일 활동 (videoPlayer)에서입니다.활동 onphaus 이상한 행동
시나리오 : 이것은 휴대 기기의 비디오 플레이어에서 발생하지만 태블릿에서는 발생하지 않습니다.
전원 단추를 눌러 대기 모드로 전환하면 onpause가 호출되고 onresume이 호출되면 일시 중지가 다시 호출됩니다. 전원 버튼을 다시 누르면 이력서가 정상적으로 호출됩니다.
아무도 이러한 문제를 겪지 않았습니까? 그렇다면 어떻게 해결 했습니까? onPause를 사용하는 것만으로도 계속 onRause를 켜고 onResume을 켜십시오. 사전에
감사합니다. 이 하나
protected void onPause()
{
Log.i("VideoPlayer", "onPauseCalled");
super.onPause();
pauseMedia();
Log.i("onPause", " save states to be called");
if(saveAllowed)
saveStates();
Log.i("onPause", " save States called");
view.setVisibility(View.GONE);
//Log.i("onPause", "visibility GOne");
removeListeners();
doCleanUp();
}
@Override
protected void onResume()
{
super.onResume();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
Log.i("VideoPlayer", "onResumeCalled");
if(pm.isScreenOn())
{
//Initialization
initializeViewControls();
handler = new Handler();
initializeButtons();
initRecordButtons();
initVolumeControl();
//RestoreState
restoreMediaBoolean();
restoreMediaState();
Log.i("After", "restoreState");
view = (SurfaceView) findViewById(R.id.surfaceView);
//Log.i("After", "GettingView");
holder = view.getHolder();
view.setVisibility(View.VISIBLE);
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
Log.i("onResume", "view is Visible");
saveAllowed = true;
}
else
saveAllowed = false;
}
private void saveStates()
{
if(!isFinishing)
{
//Log.i("VideoPlayer", "Called at saveStates()");
prefs = getSharedPreferences(PREF_SAVE, Context.MODE_PRIVATE);
if(prefs != null)
{
prefEditor = prefs.edit();
}
if(prefEditor != null)
{
//Save overlay visibiltiy
if((volumeLayout != null) && (volumeLayout.getVisibility() == View.VISIBLE))
{
prefEditor.putBoolean(IS_VOLUME_VISIBLE, true);
prefEditor.commit();
}
else
{
prefEditor.putBoolean(IS_VOLUME_VISIBLE, false);
prefEditor.commit();
}
//Save recorder Overlay state
if((recordLayout != null) && (recordLayout.getVisibility() == View.VISIBLE))
{
prefEditor.putBoolean(IS_RECORDER_VISIBLE, true);
prefEditor.commit();
}
else
{
prefEditor.putBoolean(IS_RECORDER_VISIBLE, false);
prefEditor.commit();
}
//Save controller OVerlay State
if((backButton != null) && (backButton.getVisibility() == View.VISIBLE))
{
prefEditor.putBoolean(IS_CONTROLLER_VISIBLE, true);
prefEditor.commit();
Log.i("Save States", "Controller saved as visible");
}
else
{
Log.i("Save States", "Controller saved as Invisible");
//Log.i("Saving", "Controller Invisible");
prefEditor.putBoolean(IS_CONTROLLER_VISIBLE, false);
prefEditor.commit();
}
//Save is private Audio Recorded
prefEditor.putBoolean(IS_PRIVATE_AUDIO_RECORDED, isCustomVoiceRecorded);
prefEditor.commit();
//Save are we playing out custom audio
prefEditor.putBoolean(PLAY_CUSTOM_AUDIO, playCustomAudio);
prefEditor.commit();
//Make boolean is restoring
prefEditor.putBoolean(IS_RESTORING, true);
prefEditor.commit();
//Saves Position of Current Video
if(vidplayer != null)
{
prefEditor.putInt(VIDEO_POSITION, videoPausedAt);
prefEditor.commit();
}
//Save Position of Current Audio
if(audplayer != null)
{
prefEditor.putInt(AUDIO_POSITION, audioPausedAt);
prefEditor.commit();
}
prefEditor = null;
prefs = null;
}
}
어떤 일이 것은 내가 그것을 메뉴처럼 좀 알아 동안 일시 정지 레코더 레이아웃 같은 일부 레이아웃의 상태를 저장한다는 것입니다 두 번 나타납니다. 그런 다음 전원이 켜지면 다시 켜지지만 다시 켜면 레이아웃이 사라지고 비디오가 재생되고 있지 않습니다.
것은 당신이 어떤을 게시하시기 바랍니다 수 암호? – HobieCat
그 질문에 감사드립니다. 나는 이상한 문제가있어 해결책을 찾는데 올바른 아이디어를 가지고 있습니다. – tiguchi