[3.3.0] 处理taxi内存泄漏问题
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user