修改独立app页面销毁后部分监听没有注销的问题

This commit is contained in:
wangcongtao
2020-08-03 21:12:59 +08:00
parent 83971d24a2
commit 7f93590d8c
5 changed files with 56 additions and 30 deletions

View File

@@ -21,6 +21,7 @@ import com.mogo.module.apps.model.AppEnum;
import com.mogo.module.apps.model.AppInfo;
import com.mogo.module.apps.model.NavigatorApps;
import com.mogo.module.apps.view.OnAiAssistClickListener;
import com.mogo.service.fragmentmanager.FragmentStackTransactionListener;
import com.mogo.utils.AppUtils;
import com.mogo.utils.CommonUtils;
@@ -33,7 +34,9 @@ import java.util.Map;
* <p>
* 描述
*/
public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavigatorPresenter > implements AppNavigatorView {
public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavigatorPresenter >
implements AppNavigatorView,
FragmentStackTransactionListener {
private static final String TAG = "AppNavigatorFragment";
@@ -74,14 +77,17 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi
mAIAssist.performClick();
} );
AppServiceHandler.getApis().getFragmentManagerApi().addMainFragmentStackTransactionListener( size -> {
// 主页 fragment 栈变化的时候,改变动画状态
if ( size == 0 ) {
mAnim.start();
} else {
mAnim.stop();
}
} );
AppServiceHandler.getApis().getFragmentManagerApi().addMainFragmentStackTransactionListener( this );
}
@Override
public void onTransaction( int size ) {
// 主页 fragment 栈变化的时候,改变动画状态
if ( size == 0 ) {
mAnim.start();
} else {
mAnim.stop();
}
}
@Override
@@ -151,5 +157,6 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi
if ( mPresenter != null ) {
mPresenter.onDestroy( getViewLifecycleOwner() );
}
AppServiceHandler.getApis().getFragmentManagerApi().removeMainFragmentStackTransactionListener( this );
}
}

View File

@@ -115,6 +115,7 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme
@Override
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
AppServiceHandler.getApis().getRegisterCenterApi().unregisterMogoNaviListener( TAG );
AppServiceHandler.getApis().getIntentManagerApi().unregisterIntentListener( AppsConst.COMMAND_OPERATION, this );
}

View File

@@ -45,7 +45,6 @@ public class AppsPresenter extends Presenter< AppsView > {
private IMogoServiceApis mApis;
private IMogoCardManager mCardManager;
private IMogoStatusManager mMogoStatusManager;
public AppsPresenter( AppsView view ) {
super( view );
@@ -71,7 +70,6 @@ public class AppsPresenter extends Presenter< AppsView > {
} );
mAnalytics = mApis.getAnalyticsApi();
mMogoStatusManager = mApis.getStatusManagerApi();
}
private void renderAppsList() {

View File

@@ -74,7 +74,8 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
IMogoNaviListener,
IMogoMapListener,
IMogoAimlessModeListener,
IMogoStatusChangedListener {
IMogoStatusChangedListener,
IMogoIntentListener{
private static final String TAG = "EntranceFragment";
@@ -246,24 +247,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
});
mApis.getIntentManagerApi().registerIntentListener(AUTONAVI_STANDARD_BROADCAST_RECV,
new IMogoIntentListener() {
@Override
public void onIntentReceived(String intentStr, Intent intent) {
int key_type = intent.getIntExtra("KEY_TYPE", 0);
int type = intent.getIntExtra("EXTRA_TYPE", -1);
int opera_type = intent.getIntExtra("EXTRA_OPERA", -1);
if (key_type == 10027) {
if (opera_type == 0) {
mCameraMode.setSelected(false);
} else if (opera_type == 1) {
mCameraMode.setSelected(true);
}
mCameraMode.setText(getString(mCameraMode.isSelected() ?
R.string.mode_car_up : R.string.mode_north_up));
}
}
});
mApis.getIntentManagerApi().registerIntentListener(AUTONAVI_STANDARD_BROADCAST_RECV, this);
MogoEntranceButtons.save(ButtonIndex.BUTTON1,
findViewById(R.id.module_entrance_id_button1));
MogoEntranceButtons.save(ButtonIndex.BUTTON2,
@@ -370,6 +354,22 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
isClickShare = false;
}
@Override
public void onIntentReceived(String intentStr, Intent intent) {
int key_type = intent.getIntExtra("KEY_TYPE", 0);
int type = intent.getIntExtra("EXTRA_TYPE", -1);
int opera_type = intent.getIntExtra("EXTRA_OPERA", -1);
if (key_type == 10027) {
if (opera_type == 0) {
mCameraMode.setSelected(false);
} else if (opera_type == 1) {
mCameraMode.setSelected(true);
}
mCameraMode.setText(getString(mCameraMode.isSelected() ?
R.string.mode_car_up : R.string.mode_north_up));
}
}
@Override
public void onNaviInfoUpdate(MogoNaviInfo naviinfo) {
if (naviinfo == null) {
@@ -591,4 +591,23 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mCameraMode.setSelected(ui == EnumMapUI.NorthUP_2D);
mCameraMode.setText(getString(ui == EnumMapUI.NorthUP_2D ? R.string.mode_car_up : R.string.mode_north_up));
}
@Override
public void onDestroy() {
super.onDestroy();
if ( mMogoRegisterCenter != null ) {
mMogoRegisterCenter.unregisterMogoNaviListener(ExtensionsModuleConst.TYPE_ENTRANCE);
mMogoRegisterCenter.unregisterMogoMapListener(ExtensionsModuleConst.TYPE_ENTRANCE);
mMogoRegisterCenter.unregisterMogoAimlessModeListener(TAG);
}
if ( mStatusManager != null ) {
mStatusManager.unregisterStatusChangedListener(TAG, StatusDescriptor.UPLOADING, this);
mStatusManager.unregisterStatusChangedListener(TAG, StatusDescriptor.DISPLAY_OVERVIEW, this);
}
if ( mApis != null ) {
if ( mApis.getIntentManagerApi() != null ) {
mApis.getIntentManagerApi().unregisterIntentListener(AUTONAVI_STANDARD_BROADCAST_RECV, this);
}
}
}
}

View File

@@ -311,6 +311,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mMogoMapUIController = null;
mMogoFragmentManager = null;
mServiceApis.getAdasControllerApi().release();
Logger.d( TAG, "destroy." );
mServiceApis.getRefreshStrategyControllerApi().clearAllData();
AIAssist.getInstance( this ).release();
}