全屏直接关闭导致的内存泄漏

This commit is contained in:
yangyakun
2022-06-24 17:14:22 +08:00
committed by liujing
parent 7176ced4c9
commit 3695bd0e82
5 changed files with 40 additions and 31 deletions

View File

@@ -54,12 +54,7 @@ public class TaxiPassengerServiceManager {
* @return
*/
private String getDriverAppSn(){
if(DebugConfig.isDebug()){
return "X20202206092431156";
}else {
return CallerTelematicManager.INSTANCE.getServerToken();
}
// return "X2020220425Q466X1F";
return CallerTelematicManager.INSTANCE.getServerToken();
}
/**

View File

@@ -12,6 +12,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.utilcode.util.OverlayViewUtils
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.ui.leftmenu.model.LeftMenuModel
import com.mogo.och.taxi.passenger.ui.video.FullVideoUtils
import com.mogo.och.taxi.passenger.ui.video.TaxiPassengerMogoConsultView
import com.mogo.och.taxi.passenger.ui.video.TaxiPassengerMogoMoviesView
import com.mogo.och.taxi.passenger.utils.windowdispatch.OnComputeInternalInsetsListener
@@ -105,12 +106,14 @@ object OverlayLeftViewUtils {
if(taxiPassengerMogoMoviesView?.get() != null){
OverlayViewUtils.dismissOverlayView(taxiPassengerMogoMoviesView?.get())
}
FullVideoUtils.dismissOverlayView()
}
}
val consultSelect = object :ListAdapter.OnTabSelectListener{
override fun onSelect(v: View?) {
close(view, windowManager)
FullVideoUtils.dismissOverlayView()
if(taxiPassengerMogoMoviesView?.get() != null){
OverlayViewUtils.dismissOverlayView(taxiPassengerMogoMoviesView?.get())
}
@@ -127,6 +130,7 @@ object OverlayLeftViewUtils {
val entertainmentSelect = object :ListAdapter.OnTabSelectListener{
override fun onSelect(v: View?) {
close(view, windowManager)
FullVideoUtils.dismissOverlayView()
if(taxiPassengerMogoConsultView?.get() != null){
OverlayViewUtils.dismissOverlayView(taxiPassengerMogoConsultView?.get())
}
@@ -239,6 +243,13 @@ object OverlayLeftViewUtils {
if (!isShowing) {
return
}
// 管理的要关闭都得关闭
if(taxiPassengerMogoConsultView?.get() != null){
OverlayViewUtils.dismissOverlayView(taxiPassengerMogoConsultView?.get())
}
if(taxiPassengerMogoMoviesView?.get() != null){
OverlayViewUtils.dismissOverlayView(taxiPassengerMogoMoviesView?.get())
}
subscribe?.let {
if (!it.isDisposed) {
it.dispose()

View File

@@ -62,7 +62,6 @@ public class RecyclerVideoAdapter extends RecyclerView.Adapter<RecyclerItemVideo
.setUrl(taxiPassengerVideoPlay.getUrl())
.setCacheWithPlay(true)
.setPlayTag(taxiPassengerVideoPlay.getImageUrl()+position)
.setThumbImageView(holder.gsyVideoPlayer.coverImage)
.setThumbPlay(false)
.build(holder.gsyVideoPlayer);
holder.gsyVideoPlayer.setTitle(taxiPassengerVideoPlay.getTitle());
@@ -70,7 +69,7 @@ public class RecyclerVideoAdapter extends RecyclerView.Adapter<RecyclerItemVideo
.load(taxiPassengerVideoPlay.getImageUrl())
.apply(new RequestOptions().placeholder(R.drawable.taxi_p_video_holder).centerCrop())
.into(holder.gsyVideoPlayer.coverImage);
holder.gsyVideoPlayer.getThumbImageView().setOnClickListener(new View.OnClickListener() {
holder.gsyVideoPlayer.getThumbImageViewLayout().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(onThumbImageClilckListener!=null){

View File

@@ -6,6 +6,7 @@ import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.RelativeLayout
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
@@ -83,9 +84,6 @@ class TaxiPassengerMogoMoviesView :RelativeLayout {
if(prePlayerPosition!=centerItemPosition) {
if(player.currentState==GSYVideoView.CURRENT_STATE_PAUSE){
player.onVideoReset()
player.startPlayLogic()
}else{
player.startPlayLogic()
}
val taxiPassengerVideoPlay = arrayListOf[centerItemPosition]
setBackageAndPlayNext(taxiPassengerVideoPlay, player, centerItemPosition)
@@ -117,6 +115,15 @@ class TaxiPassengerMogoMoviesView :RelativeLayout {
}
indicatorView.onPageScrolled(currentIndex, fl, 0)
}
recyclerVideoAdapter.setOnThumbImageClilckListener {
val centerItemPosition: Int = carouselLayoutManager.centerItemPosition
val player = carouselLayoutManager.findViewByPosition(centerItemPosition)
if(player is ConsultVideoPlayer) {
player.onVideoReset()
player.thumbImageViewLayout.visibility = View.VISIBLE
}
rvVideoPlaylist.smoothScrollToPosition(it)
}
rvVideoPlaylist.layoutManager = carouselLayoutManager
rvVideoPlaylist.setHasFixedSize(true)
rvVideoPlaylist.adapter = recyclerVideoAdapter
@@ -160,6 +167,11 @@ class TaxiPassengerMogoMoviesView :RelativeLayout {
}
}
}
override fun onClickBlank(url: String?, vararg objects: Any?) {
super.onClickBlank(url, *objects)
rvVideoPlaylist.smoothScrollToPosition(centerItemPosition)
}
})
}
}
@@ -190,7 +202,6 @@ class TaxiPassengerMogoMoviesView :RelativeLayout {
recyclerVideoAdapter.getItemByPosition(centerItemPosition),
player, centerItemPosition
)
player.startPlayLogic()
}
}
}

View File

@@ -111,7 +111,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
//时间显示
currentTimeTextView.text = TimeTransformUtils.stringForTime(currentTime)
totalTimeTextView.text = TimeTransformUtils.stringForTime(totalTime)
if(currentTime==totalTime){
if(currentTime>=totalTime-3000){//
this.currentTime = -1
}else{
this.currentTime = currentTime
@@ -130,17 +130,11 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
super.onDetachedFromWindow()
mProgressBar?.progress = 0
mFullPauseBitmap = null
if(mIfCurrentIsFullscreen){
FullVideoUtils.dismissOverlayView()
fullVideoPlayer?.let {
clearFullscreenLayout(it)
}
fullVideoPlayer?.onVideoReset()
thumbImageViewLayout.visibility = View.VISIBLE
}else{
onVideoReset()
fullVideoPlayer?.let {
clearFullscreenLayout(it)
}
fullVideoPlayer = null
onVideoReset()
setVideoAllCallBack(null)
}
@@ -158,7 +152,9 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
startPlayLogic()
}else {
mProgressBar?.let {
seekOnStart = currentTime.toLong()
if(currentTime>0) {
seekOnStart = currentTime.toLong()
}
startPlayLogic()
}
}
@@ -302,18 +298,15 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
gsyVideoPlayer.fullscreenButton.setImageResource(R.drawable.taxi_p_change_normal)
gsyVideoPlayer.fullscreenButton.setOnClickListener { v ->
if (mBackFromFullScreenListener == null) {
FullVideoUtils.dismissOverlayView()
clearFullscreenLayout(gsyVideoPlayer)
FullVideoUtils.dismissOverlayView()
} else {
mBackFromFullScreenListener.onClick(v)
}
}
}
frameLayout.setBackgroundColor(Color.BLACK)
val lp = LayoutParams(
width, height
)
val lp = LayoutParams(width, height)
frameLayout.addView(gsyVideoPlayer, lp)
FullVideoUtils.showOverlayView(context as Activity,frameLayout,R.style.och_window_anim_alpha)
gsyVideoPlayer.visibility = INVISIBLE
@@ -366,7 +359,6 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
frameLayout.visibility = VISIBLE
}
if (mVideoAllCallBack != null) {
Debuger.printfError("onEnterFullscreen")
mVideoAllCallBack.onEnterFullscreen(mOriginUrl, mTitle, gsyVideoPlayer)
}
mIfCurrentIsFullscreen = true
@@ -374,7 +366,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
checkAutoFullWithSizeAndAdaptation(gsyVideoPlayer)
}
fun clearFullscreenLayout(gsyVideoPlayer:GSYVideoPlayer) {
private fun clearFullscreenLayout(gsyVideoPlayer:GSYVideoPlayer) {
mIfCurrentIsFullscreen = false
val delay = 0
mInnerHandler.postDelayed({ resolveNormalVideoShow(gsyVideoPlayer) }, delay.toLong())
@@ -385,6 +377,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
cloneParams(gsyVideoPlayer, this)
gsyVideoManager.setListener(gsyVideoManager.lastListener())
gsyVideoManager.setLastListener(null)
gsyVideoPlayer.setVideoAllCallBack(null)
setStateAndUi(mCurrentState)
addTextureView()
mSaveChangeViewTIme = System.currentTimeMillis()