[3.3.0] 处理taxi内存泄漏问题

This commit is contained in:
wangmingjun
2023-06-09 17:58:33 +08:00
committed by zhongchao
parent 47396cbe3b
commit 00a999c777

View File

@@ -58,8 +58,8 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
return fragment;
}
private TaxiGrabOrderFragment grabOrderFragment;
private TaxiServerOrdersFragment serverOrdersFragment;
private WeakReference<TaxiGrabOrderFragment> grabOrderFragmentWR;
private WeakReference<TaxiServerOrdersFragment> serverOrdersFragmentWR;
private WeakReference<TaxiPersonalDialogFragment> personalDialogFragment = null;
private LoginService loginService;
@@ -118,32 +118,34 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
}
private void initFragment() {
serverOrdersFragment = TaxiServerOrdersFragment.newInstance();
grabOrderFragment = TaxiGrabOrderFragment.newInstance();
serverOrdersFragmentWR = new WeakReference<>(TaxiServerOrdersFragment.newInstance());
grabOrderFragmentWR = new WeakReference<>(TaxiGrabOrderFragment.newInstance());
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
//默认显示OCHTaxiServerOrdersFragment
transaction.add(R.id.fragment_container, serverOrdersFragment).show(serverOrdersFragment);
transaction.add(R.id.fragment_container, grabOrderFragment).hide(grabOrderFragment);
transaction.add(R.id.fragment_container, serverOrdersFragmentWR.get()).show(serverOrdersFragmentWR.get());
transaction.add(R.id.fragment_container, grabOrderFragmentWR.get()).hide(grabOrderFragmentWR.get());
transaction.commitAllowingStateLoss();
}
private void showGrabFragmentAndUpdate() {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
if (grabOrderFragment == null) {
grabOrderFragment = TaxiGrabOrderFragment.newInstance();
transaction.add(R.id.fragment_container, grabOrderFragment).show(grabOrderFragment).commitAllowingStateLoss();
if (grabOrderFragmentWR == null || grabOrderFragmentWR.get() == null) {
grabOrderFragmentWR = new WeakReference<>(TaxiGrabOrderFragment.newInstance());
transaction.add(R.id.fragment_container, grabOrderFragmentWR.get())
.show(grabOrderFragmentWR.get()).commitAllowingStateLoss();
} else {
transaction.show(grabOrderFragment).hide(serverOrdersFragment).commitAllowingStateLoss();
transaction.show(grabOrderFragmentWR.get()).hide(serverOrdersFragmentWR.get()).commitAllowingStateLoss();
}
}
public void showServerFragmentAndUpdate() {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
if (serverOrdersFragment == null) {
serverOrdersFragment = TaxiServerOrdersFragment.newInstance();
transaction.add(R.id.fragment_container, serverOrdersFragment).show(serverOrdersFragment);
if (serverOrdersFragmentWR == null || serverOrdersFragmentWR.get() == null) {
serverOrdersFragmentWR = new WeakReference<>(TaxiServerOrdersFragment.newInstance());
transaction.add(R.id.fragment_container, serverOrdersFragmentWR.get())
.show(serverOrdersFragmentWR.get());
} else {
transaction.show(serverOrdersFragment).hide(grabOrderFragment).commitAllowingStateLoss();
transaction.show(serverOrdersFragmentWR.get()).hide(grabOrderFragmentWR.get()).commitAllowingStateLoss();
}
}
@@ -208,8 +210,8 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
@RequiresApi(api = Build.VERSION_CODES.P)
public void updateCurrentOrderStatusChanged(OrderQueryRespBean.Result order) {
if (serverOrdersFragment != null) {
serverOrdersFragment.updateCurrentOrderStatusChanged(order);
if (serverOrdersFragmentWR != null && serverOrdersFragmentWR.get() != null) {
serverOrdersFragmentWR.get().updateCurrentOrderStatusChanged(order);
}
updateTaxiTestBarInfo(); //更新调试bar中信息
}
@@ -240,25 +242,25 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
public void onCurrentOrderCancelDone(){
startOrStopLoadingAnim(false);
if (null == serverOrdersFragment) return;
serverOrdersFragment.onCurrentOrderCancelDone();
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onCurrentOrderCancelDone();
}
public void onOrderCancelDone(String orderNo) {
if (null == serverOrdersFragment) return;
serverOrdersFragment.onOrderCancelDone(orderNo);
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onOrderCancelDone(orderNo);
}
@Override
protected void updateOrderBottomBtnUI() {
if (null == serverOrdersFragment) return;
serverOrdersFragment.updateOrderBottomBtnUI();
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().updateOrderBottomBtnUI();
}
public void onNewBookingOrderGot(OrderQueryRespBean.Result order) {
if (null == order) return;
showGrabFragmentAndUpdate();
grabOrderFragment.updateGrabOrder(order);
grabOrderFragmentWR.get().updateGrabOrder(order);
}
public void grabOrder() {
@@ -271,18 +273,18 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
}
public void onGrabOrderExecuteDone() {
if (null == grabOrderFragment) return;
grabOrderFragment.onGrabOrderExecuteDone();
if (null == grabOrderFragmentWR || grabOrderFragmentWR.get() == null) return;
grabOrderFragmentWR.get().onGrabOrderExecuteDone();
}
public void onGrabOrderSuccess(OrderQueryRespBean.Result order) {
if (null == grabOrderFragment) return;
if (null == grabOrderFragmentWR || grabOrderFragmentWR.get() == null) return;
if (null == order) {
showServerFragmentAndUpdate();
return;
}
showGrabFragmentAndUpdate();
grabOrderFragment.onGrabOrderSuccess();
grabOrderFragmentWR.get().onGrabOrderSuccess();
}
public void onGrabOrderFailed(OrderQueryRespBean.Result order) {
@@ -290,15 +292,15 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
showServerFragmentAndUpdate();
return;
}
if (null == grabOrderFragment) return;
if (null == grabOrderFragmentWR || grabOrderFragmentWR.get() == null) return;
showGrabFragmentAndUpdate();
grabOrderFragment.onGrabOrderFailed();
grabOrderFragmentWR.get().onGrabOrderFailed();
}
public void onNaviToEnd(boolean isAmap , boolean isShow){
if (isAmap){
if (null == serverOrdersFragment) return;
serverOrdersFragment.onNaviToEndAmap(isShow);
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onNaviToEndAmap(isShow);
}else if (isShow){ //使用rotting数据
showRottingToStationFragment(true);
}else {
@@ -322,8 +324,8 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
public void onOrdersWaitServiceChanged(List<OrderQueryRespBean.Result> waitServiceList) {
if (null == waitServiceList) return;
if (null == serverOrdersFragment) return;
serverOrdersFragment.onOrdersWaitServiceChanged(waitServiceList);
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onOrdersWaitServiceChanged(waitServiceList);
}
public void queryCurOrderRouteInfo() {
@@ -331,13 +333,13 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
}
public void onCurrentOrderRouteInfoGot(OrderQueryRouteInfoRespBean.Result routeInfo) {
if (null == serverOrdersFragment) return;
serverOrdersFragment.onCurrentOrderRouteInfoGot(routeInfo);
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onCurrentOrderRouteInfoGot(routeInfo);
}
public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) {
if (null == serverOrdersFragment) return;
serverOrdersFragment.onCurrentOrderDistToEndChanged(meters, timeInSecond);
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return;
serverOrdersFragmentWR.get().onCurrentOrderDistToEndChanged(meters, timeInSecond);
}
/**