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