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