diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml
index fc32fcdd18..73a1e40567 100644
--- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml
+++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml
@@ -18,8 +18,7 @@
android:paddingLeft="@dimen/module_ext_search_paddingLeft"
android:paddingRight="@dimen/module_ext_search_paddingRight"
android:text="@string/module_map_str_search_hint"
- android:textColorHint="#FFFFFF"
- android:textColor="#99FFFFFF"
+ android:textColor="#FFFFFF"
android:textSize="@dimen/module_ext_search_textSize"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
index c4238c84aa..a171708830 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java
@@ -2,6 +2,8 @@ package com.mogo.module.main;
import android.os.Bundle;
import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
@@ -28,6 +30,7 @@ import com.mogo.module.main.cards.MogoModulesManager;
import com.mogo.module.main.cards.OnPageChangeListenerAdapter;
import com.mogo.module.main.cards.OrientedViewPager;
import com.mogo.module.main.cards.VerticalStackTransformer;
+import com.mogo.module.main.constants.MainConstants;
import com.mogo.module.main.windowview.WindowViewHandler;
import com.mogo.module.service.ServiceConst;
import com.mogo.service.MogoServicePaths;
@@ -48,7 +51,7 @@ import java.util.Map;
*
* 描述:加载各个模块
*/
-public class MainActivity extends MvpActivity implements MainView,
+public class MainActivity extends MvpActivity< MainView, MainPresenter > implements MainView,
IMogoLocationListener,
IMogoMarkerClickListener {
@@ -83,8 +86,35 @@ public class MainActivity extends MvpActivity implement
private long mCardStartShowTime = 0;
+ // 埋点接口
private IMogoAnalytics mAnalytics;
+ private Handler mMsgHandler = new Handler( Looper.getMainLooper() ) {
+ @Override
+ public void handleMessage( Message msg ) {
+ super.handleMessage( msg );
+ switch ( msg.what ) {
+ case MainConstants.MSG_LOAD_CARD_MODULES:
+ loadCardModules();
+ mMsgHandler.sendEmptyMessageDelayed( MainConstants.MSG_LOAD_INVOKE_FIRST_CARD_PERFORM_EVENT, 1_000L );
+ break;
+ case MainConstants.MSG_LOAD_INVOKE_FIRST_CARD_PERFORM_EVENT:
+ if ( mOnPageChangeListener != null ) {
+ // 默认触发第一个卡片
+ mOnPageChangeListener.onPageSelected( 0 );
+ }
+ break;
+ case MainConstants.MSG_TRACK_LAST_CARD_DISPLAY_EVENT:
+ trackLastCardShowEvent( ( IMogoModuleProvider ) msg.obj );
+ break;
+ case MainConstants.MSG_TRACK_CARD_FLIP_EVENT:
+ break;
+ }
+ }
+ };
+
+ private ViewPager.OnPageChangeListener mOnPageChangeListener;
+
@Override
protected int getLayoutId() {
return R.layout.module_main_activity_main;
@@ -92,193 +122,200 @@ public class MainActivity extends MvpActivity implement
@Override
protected void initViews() {
- mCardsContainer = findViewById(R.id.module_main_id_cards_container);
- mCardsContainer.setOrientation(OrientedViewPager.Orientation.VERTICAL);
+ mCardsContainer = findViewById( R.id.module_main_id_cards_container );
+ mCardsContainer.setOrientation( OrientedViewPager.Orientation.VERTICAL );
- mCardsContainer.setOnPageChangeListener(new OnPageChangeListenerAdapter() {
+ mCardsContainer.setOnPageChangeListener( mOnPageChangeListener = new OnPageChangeListenerAdapter() {
private boolean mIsLast = true;
private boolean mCardFlipStatus = false;
@Override
- public void onPageSelected(int position) {
+ public void onPageSelected( int position ) {
final long start = System.currentTimeMillis();
try {
- IMogoModuleProvider provider = mCardModulesAdapter.getProvider(mCurrentPosition);
- trackLastCardShowEvent(provider);
+ IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition );
+ Message msg = Message.obtain();
+ msg.what = MainConstants.MSG_TRACK_LAST_CARD_DISPLAY_EVENT;
+ msg.obj = provider;
+ mMsgHandler.sendMessage(msg );
mCurrentPosition = position;
- provider = mCardModulesAdapter.getProvider(mCurrentPosition);
- mMogoModuleHandler.setModuleEnable(provider.getModuleName());
- if (!isClickMarker) {
- mMogoCardManager.invoke(position, mMogoModuleHandler.getCurrentModuleName());
+ provider = mCardModulesAdapter.getProvider( mCurrentPosition );
+ mMogoModuleHandler.setModuleEnable( provider.getModuleName() );
+ if ( !isClickMarker ) {
+ mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() );
}
- } catch (Exception e) {
+ } catch ( Exception e ) {
e.printStackTrace();
}
- Log.i(TAG, "onPageSelected cost " + (System.currentTimeMillis() - start) + "ms");
+ Log.i( TAG, "onPageSelected cost " + ( System.currentTimeMillis() - start ) + "ms" );
}
@Override
- public void onPageScrollStateChanged(int state) {
+ public void onPageScrollStateChanged( int state ) {
final long start = System.currentTimeMillis();
- super.onPageScrollStateChanged(state);
- if (state == ViewPager.SCROLL_STATE_DRAGGING) {
- if (!mCardFlipStatus) {
+ super.onPageScrollStateChanged( state );
+ if ( state == ViewPager.SCROLL_STATE_DRAGGING ) {
+ if ( !mCardFlipStatus ) {
mCardFlipStatus = true;
- final IMogoModuleProvider provider = mCardModulesAdapter.getProvider(mCurrentPosition);
- trackCardFlipEvent(provider);
+ final IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition );
+ Message msg = Message.obtain();
+ msg.what = MainConstants.MSG_TRACK_CARD_FLIP_EVENT;
+ msg.obj = provider;
+ mMsgHandler.sendMessage(msg );
}
- } else if (state == ViewPager.SCROLL_STATE_IDLE) {
+ } else if ( state == ViewPager.SCROLL_STATE_IDLE ) {
mCardFlipStatus = false;
}
int cardSize = mCardModulesAdapter.getCount();
- if (state == ViewPager.SCROLL_STATE_SETTLING) {
+ if ( state == ViewPager.SCROLL_STATE_SETTLING ) {
mIsLast = false;
- } else if (state == ViewPager.SCROLL_STATE_IDLE && mIsLast) {
+ } else if ( state == ViewPager.SCROLL_STATE_IDLE && mIsLast ) {
//此处为你需要的情况,再加入当前页码判断可知道是第一页还是最后一页
- if (cardSize != 1 && mCurrentPosition == (cardSize - 1)) {
- mCardsContainer.setCurrentItem(0, false);
- } else if (cardSize != 1 && mCurrentPosition == 0) {
- mCardsContainer.setCurrentItem(cardSize - 1, false);
+ if ( cardSize != 1 && mCurrentPosition == ( cardSize - 1 ) ) {
+ mCardsContainer.setCurrentItem( 0, false );
+ } else if ( cardSize != 1 && mCurrentPosition == 0 ) {
+ mCardsContainer.setCurrentItem( cardSize - 1, false );
}
} else {
mIsLast = true;
}
- Log.i(TAG, "onPageScrollStateChanged cost " + (System.currentTimeMillis() - start) + "ms");
+ Log.i( TAG, "onPageScrollStateChanged cost " + ( System.currentTimeMillis() - start ) + "ms" );
}
+ } );
- /**
- * 卡片展示时长埋点
- * @param provider
- */
- private void trackLastCardShowEvent(IMogoModuleProvider provider) {
- if (provider == null) {
- return;
- }
- Map properties = new HashMap<>();
- properties.put("appname", provider.getAppName());
- properties.put("packagename", provider.getAppPackage());
- properties.put("activeTime", System.currentTimeMillis() - mCardStartShowTime);
- properties.put("type", provider.getModuleName());
- mAnalytics.track("Launcher_Card_Show", properties);
- mCardStartShowTime = System.currentTimeMillis();
- }
-
- /**
- * 卡片滑动埋点,WTF
- */
- private void trackCardFlipEvent(IMogoModuleProvider provider) {
- if (provider == null) {
- return;
- }
- Map properties = new HashMap<>();
- properties.put("appname", provider.getAppName());
- properties.put("packagename", provider.getAppPackage());
- properties.put("type", provider.getModuleName());
- mAnalytics.track("Launcher_Card_Slide", properties);
- }
- });
-
- mMogoFragmentManager = (IMogoFragmentManager) ARouter.getInstance().build(MogoServicePaths.PATH_FRAGMENT_MANAGER).navigation(this);
- mMogoFragmentManager.init(this, R.id.module_main_id_search_fragment);
- mMogoFragmentManager.registerMainFragmentStackTransactionListener((size) -> {
- if (size == 0) {
+ mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation( this );
+ mMogoFragmentManager.init( this, R.id.module_main_id_search_fragment );
+ mMogoFragmentManager.registerMainFragmentStackTransactionListener( ( size ) -> {
+ if ( size == 0 ) {
showLayout();
- } else if (size == 1) {
+ } else if ( size == 1 ) {
hideLayout();
}
- });
- mHeader = findViewById(R.id.module_main_id_header_fragment_container);
- mCards = findViewById(R.id.module_main_id_cards_container);
- mApps = findViewById(R.id.module_main_id_apps_fragment_container);
- mEntrance = findViewById(R.id.module_main_id_entrance_fragment_container);
- mFloatingLayout = findViewById(R.id.module_main_id_floating_view);
- mLeftShadowFrame = findViewById(R.id.module_main_id_map_left_shadow_frame);
- mTopShadowFrame = findViewById(R.id.module_main_id_map_top_shadow_frame);
+ } );
+ mHeader = findViewById( R.id.module_main_id_header_fragment_container );
+ mCards = findViewById( R.id.module_main_id_cards_container );
+ mApps = findViewById( R.id.module_main_id_apps_fragment_container );
+ mEntrance = findViewById( R.id.module_main_id_entrance_fragment_container );
+ mFloatingLayout = findViewById( R.id.module_main_id_floating_view );
+ mLeftShadowFrame = findViewById( R.id.module_main_id_map_left_shadow_frame );
+ mTopShadowFrame = findViewById( R.id.module_main_id_map_top_shadow_frame );
- WindowViewHandler.init(mFloatingLayout);
+ WindowViewHandler.init( mFloatingLayout );
+ }
+
+
+ /**
+ * 卡片展示时长埋点
+ *
+ * @param provider
+ */
+ private void trackLastCardShowEvent( IMogoModuleProvider provider ) {
+ if ( provider == null ) {
+ return;
+ }
+ Map< String, Object > properties = new HashMap<>();
+ properties.put( "appname", provider.getAppName() );
+ properties.put( "packagename", provider.getAppPackage() );
+ properties.put( "activeTime", System.currentTimeMillis() - mCardStartShowTime );
+ properties.put( "type", provider.getModuleName() );
+ mAnalytics.track( "Launcher_Card_Show", properties );
+ mCardStartShowTime = System.currentTimeMillis();
+ }
+
+ /**
+ * 卡片滑动埋点,WTF
+ */
+ private void trackCardFlipEvent( IMogoModuleProvider provider ) {
+ if ( provider == null ) {
+ return;
+ }
+ Map< String, Object > properties = new HashMap<>();
+ properties.put( "appname", provider.getAppName() );
+ properties.put( "packagename", provider.getAppPackage() );
+ properties.put( "type", provider.getModuleName() );
+ mAnalytics.track( "Launcher_Card_Slide", properties );
}
// 隐藏布局
private void hideLayout() {
- mHeader.setVisibility(View.GONE);
- mCards.setVisibility(View.GONE);
- mApps.setVisibility(View.GONE);
- mEntrance.setVisibility(View.GONE);
- mFloatingLayout.setVisibility(View.GONE);
- mLeftShadowFrame.setVisibility(View.GONE);
+ mHeader.setVisibility( View.GONE );
+ mCards.setVisibility( View.GONE );
+ mApps.setVisibility( View.GONE );
+ mEntrance.setVisibility( View.GONE );
+ mFloatingLayout.setVisibility( View.GONE );
+ mLeftShadowFrame.setVisibility( View.GONE );
}
// 显示布局
private void showLayout() {
- mHeader.setVisibility(View.VISIBLE);
- mCards.setVisibility(View.VISIBLE);
- mApps.setVisibility(View.VISIBLE);
- mEntrance.setVisibility(View.VISIBLE);
- mFloatingLayout.setVisibility(View.VISIBLE);
- mLeftShadowFrame.setVisibility(View.VISIBLE);
+ mHeader.setVisibility( View.VISIBLE );
+ mCards.setVisibility( View.VISIBLE );
+ mApps.setVisibility( View.VISIBLE );
+ mEntrance.setVisibility( View.VISIBLE );
+ mFloatingLayout.setVisibility( View.VISIBLE );
+ mLeftShadowFrame.setVisibility( View.VISIBLE );
}
@Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
+ protected void onCreate( @Nullable Bundle savedInstanceState ) {
+ super.onCreate( savedInstanceState );
- MogoModulePaths.addModule(new MogoModule(ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY));
+ MogoModulePaths.addModule( new MogoModule( ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY ) );
- mMogoModuleHandler = new MogoModulesManager(this);
- mMogoMapService = (IMogoMapService) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation();
- if (mMogoMapService != null) {
- mMogoMapService.getHostListenerRegister().registerHostMapListener(mMogoModuleHandler);
- mMogoMapService.getHostListenerRegister().registerHostNaviListener(mMogoModuleHandler);
- mMogoMapService.getHostListenerRegister().registerMarkerClickListener(this);
+ mMogoModuleHandler = new MogoModulesManager( this );
+ mMogoMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation();
+ if ( mMogoMapService != null ) {
+ mMogoMapService.getHostListenerRegister().registerHostMapListener( mMogoModuleHandler );
+ mMogoMapService.getHostListenerRegister().registerHostNaviListener( mMogoModuleHandler );
+ mMogoMapService.getHostListenerRegister().registerMarkerClickListener( this );
}
- mMogoModuleHandler.setMapLoadedCallback(() -> {
- Logger.d(TAG, "map loaded." + Thread.currentThread().getName());
+ mMogoModuleHandler.setMapLoadedCallback( () -> {
+ Logger.d( TAG, "map loaded." + Thread.currentThread().getName() );
// 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。
mMogoModuleHandler.loadModules();
loadContainerModules();
- new Handler().postDelayed(() -> loadCardModules(), 5000);
+ mMsgHandler.sendEmptyMessageDelayed( MainConstants.MSG_LOAD_CARD_MODULES, 5_000L );
// 显示左边遮罩
- mLeftShadowFrame.setVisibility(View.VISIBLE);
- mTopShadowFrame.setVisibility(View.VISIBLE);
+ mLeftShadowFrame.setVisibility( View.VISIBLE );
+ mTopShadowFrame.setVisibility( View.VISIBLE );
// 右移地图中心点
mMogoMapUIController = mMogoMapService.getMapUIController();
- mMogoMapUIController.setPointToCenter(0.66145, 0.590688);
+ mMogoMapUIController.setPointToCenter( 0.66145, 0.590688 );
// 开启定位
startLocation();
- });
- mMogoModuleHandler.loadMapModule(R.id.module_main_id_map_fragment_container);
+ } );
+ mMogoModuleHandler.loadMapModule( R.id.module_main_id_map_fragment_container );
- mMogoCardManager = (IMogoCardManager) ARouter.getInstance().build(MogoServicePaths.PATH_CARD_MANAGER).navigation(this);
- mAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation(this);
+ mMogoCardManager = ( IMogoCardManager ) ARouter.getInstance().build( MogoServicePaths.PATH_CARD_MANAGER ).navigation( this );
+ mAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( this );
}
private void startLocation() {
- mLocationClient = mMogoMapService.getSingletonLocationClient(getApplicationContext());
- mLocationClient.addLocationListener(this);
+ mLocationClient = mMogoMapService.getSingletonLocationClient( getApplicationContext() );
+ mLocationClient.addLocationListener( this );
mLocationClient.start();
}
private void loadContainerModules() {
- mMogoModuleHandler.loadAppsListModule(R.id.module_main_id_apps_fragment_container);
- mMogoModuleHandler.loadExtensionsModule(R.id.module_main_id_header_fragment_container);
- mMogoModuleHandler.loadEntrancesModule(R.id.module_main_id_entrance_fragment_container);
+ mMogoModuleHandler.loadAppsListModule( R.id.module_main_id_apps_fragment_container );
+ mMogoModuleHandler.loadExtensionsModule( R.id.module_main_id_header_fragment_container );
+ mMogoModuleHandler.loadEntrancesModule( R.id.module_main_id_entrance_fragment_container );
}
private void loadCardModules() {
- List providers = mMogoModuleHandler.loadCardsModule();
- mCardModulesAdapter = new CardModulesAdapter(this, providers);
- mCardsContainer.setOffscreenPageLimit(providers.size());
- mCardsContainer.setPageTransformer(true, new VerticalStackTransformer(this));
- mCardsContainer.setAdapter(mCardModulesAdapter);
- mCardsContainer.setCurrentItem(mCurrentPosition);
+ List< IMogoModuleProvider > providers = mMogoModuleHandler.loadCardsModule();
+ mCardModulesAdapter = new CardModulesAdapter( this, providers );
+ mCardsContainer.setOffscreenPageLimit( providers.size() );
+ mCardsContainer.setPageTransformer( true, new VerticalStackTransformer( this ) );
+ mCardsContainer.setAdapter( mCardModulesAdapter );
mCardStartShowTime = System.currentTimeMillis();
}
@@ -287,62 +324,62 @@ public class MainActivity extends MvpActivity implement
@NonNull
@Override
protected MainPresenter createPresenter() {
- return new MainPresenter(this);
+ return new MainPresenter( this );
}
@Override
- public void onLocationChanged(MogoLocation location) {
- if (mMogoModuleHandler != null) {
- mMogoModuleHandler.onLocationChanged(location);
+ public void onLocationChanged( MogoLocation location ) {
+ if ( mMogoModuleHandler != null ) {
+ mMogoModuleHandler.onLocationChanged( location );
}
}
@Override
- public boolean onMarkerClicked(IMogoMarker marker) {
+ public boolean onMarkerClicked( IMogoMarker marker ) {
isClickMarker = true;
- switch2(marker.getOwner());
- if (mMogoModuleHandler != null) {
- mMogoModuleHandler.onMarkerClicked(marker);
+ switch2( marker.getOwner() );
+ if ( mMogoModuleHandler != null ) {
+ mMogoModuleHandler.onMarkerClicked( marker );
}
isClickMarker = false;
return false;
}
@Override
- public void switch2(String cardType) {
- if (mCardModulesAdapter != null) {
+ public void switch2( String cardType ) {
+ if ( mCardModulesAdapter != null ) {
- int position = mCardModulesAdapter.getProviderPosition(cardType);
- if (position != -1) {
- int lastFactPosition = mCardModulesAdapter.getFactPosition(mCurrentPosition);
- mCardsContainer.setCurrentItem(mCurrentPosition + position - lastFactPosition, Math.abs(lastFactPosition - position) == 1);
- if (!isClickMarker) {
- mMogoCardManager.invoke(position, mMogoModuleHandler.getCurrentModuleName());
+ int position = mCardModulesAdapter.getProviderPosition( cardType );
+ if ( position != -1 ) {
+ int lastFactPosition = mCardModulesAdapter.getFactPosition( mCurrentPosition );
+ mCardsContainer.setCurrentItem( mCurrentPosition + position - lastFactPosition, Math.abs( lastFactPosition - position ) == 1 );
+ if ( !isClickMarker ) {
+ mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() );
}
} else {
- Logger.e(TAG, "Can't find type of %s's position", cardType);
+ Logger.e( TAG, "Can't find type of %s's position", cardType );
}
}
}
@Override
protected void onResume() {
- MapBroadCastHelper.getInstance(this).mapFrount();
+ MapBroadCastHelper.getInstance( this ).mapFrount();
super.onResume();
}
@Override
protected void onPause() {
- MapBroadCastHelper.getInstance(this).mapBackground();
+ MapBroadCastHelper.getInstance( this ).mapBackground();
super.onPause();
}
@Override
public void onBackPressed() {
- if (mMogoFragmentManager.getStackSize() == 0) {
+ if ( mMogoFragmentManager.getStackSize() == 0 ) {
return;
}
- if (mMogoFragmentManager != null) {
+ if ( mMogoFragmentManager != null ) {
mMogoFragmentManager.pop();
}
}
@@ -351,12 +388,12 @@ public class MainActivity extends MvpActivity implement
@Override
protected void onDestroy() {
super.onDestroy();
- if (mLocationClient != null) {
- mLocationClient.removeLocationListener(this);
+ if ( mLocationClient != null ) {
+ mLocationClient.removeLocationListener( this );
mLocationClient.destroy();
}
mLocationClient = null;
- if (mMogoModuleHandler != null) {
+ if ( mMogoModuleHandler != null ) {
mMogoModuleHandler.destroy();
}
mMogoModuleHandler = null;
@@ -365,6 +402,6 @@ public class MainActivity extends MvpActivity implement
mMogoCardManager = null;
mMogoFragmentManager = null;
- AIAssist.getInstance(this).release();
+ AIAssist.getInstance( this ).release();
}
}
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/constants/MainConstants.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/constants/MainConstants.java
new file mode 100644
index 0000000000..2128c635bf
--- /dev/null
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/constants/MainConstants.java
@@ -0,0 +1,30 @@
+package com.mogo.module.main.constants;
+
+/**
+ * @author congtaowang
+ * @since 2020-02-12
+ *
+ * 描述
+ */
+public class MainConstants {
+
+ /**
+ * 消息:加载卡片模块
+ */
+ public static final int MSG_LOAD_CARD_MODULES = 5000;
+
+ /**
+ * 消息:触发第一张卡片的onPerform 时间
+ */
+ public static final int MSG_LOAD_INVOKE_FIRST_CARD_PERFORM_EVENT = 5001;
+
+ /**
+ * 消息:卡片展示事件
+ */
+ public static final int MSG_TRACK_LAST_CARD_DISPLAY_EVENT = 5002;
+
+ /**
+ * 消息:卡片滑动事件
+ */
+ public static final int MSG_TRACK_CARD_FLIP_EVENT = 5003;
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataHandler.java
index d6503649a2..7421c475fe 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataHandler.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataHandler.java
@@ -6,6 +6,7 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.datamanager.IMogoDataChangedListener;
import com.mogo.service.datamanager.IMogoDataManager;
+import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
import java.util.HashMap;
@@ -21,6 +22,8 @@ import java.util.Map;
*/
public class MogoDataHandler {
+ private static final String TAG = "MogoDataHandler";
+
private Map< String, List< IMogoDataChangedListener > > mListeners = new HashMap<>();
private MogoDataHandler() {
@@ -42,6 +45,7 @@ public class MogoDataHandler {
if ( !mListeners.containsKey( tag ) || mListeners.get( tag ) == null ) {
mListeners.put( tag, new ArrayList< IMogoDataChangedListener >() );
}
+ mListeners.get( tag ).add( listener );
}
public synchronized void unregisterListener( String tag, IMogoDataChangedListener listener ) {
@@ -53,16 +57,20 @@ public class MogoDataHandler {
}
}
- public void invoke( String tag, List< Object > datums ) {
- if ( tag == null ) {
+ public void invoke( String tag, Object data ) {
+ if ( tag == null || mListeners.get( tag ) == null ) {
return;
}
- Iterator< IMogoDataChangedListener > iterator = mListeners.get( tag ).iterator();
- while ( iterator.hasNext() ) {
- IMogoDataChangedListener listener = iterator.next();
- if ( listener != null ) {
- listener.onDataSetChanged( datums );
+ try {
+ Iterator< IMogoDataChangedListener > iterator = mListeners.get( tag ).iterator();
+ while ( iterator.hasNext() ) {
+ IMogoDataChangedListener listener = iterator.next();
+ if ( listener != null ) {
+ listener.onDataSetChanged( data );
+ }
}
+ } catch( Exception e ){
+ Logger.e(TAG, e, "error.");
}
}
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
index 1c255e42b3..6025257b38 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
@@ -23,6 +23,7 @@ import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.ServiceConst;
import com.mogo.module.service.Utils;
+import com.mogo.module.service.datamanager.MogoDataHandler;
import com.mogo.service.cardmanager.IMogoCardChangedListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.utils.logger.Logger;
@@ -325,6 +326,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
}
}
+ // 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗
+ MogoDataHandler.getInstance().invoke( ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList);
if (exploreWayList != null) {
for (MarkerExploreWay markerExploreWay : exploreWayList) {
if (!markerExploreWay.getCanLive()) {
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/DataSetChangedAdapter.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/DataSetChangedAdapter.java
new file mode 100644
index 0000000000..a13c7e2ff1
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/DataSetChangedAdapter.java
@@ -0,0 +1,44 @@
+package com.mogo.module.tanlu.callback;
+
+import com.mogo.service.datamanager.IMogoDataChangedListener;
+
+/**
+ * @author congtaowang
+ * @since 2020-02-12
+ *
+ * 描述
+ */
+public class DataSetChangedAdapter implements IMogoDataChangedListener {
+
+ private Object mData;
+
+ private DataSetChangedAdapter(){
+ // private constructor
+ }
+
+ private static final class InstanceHolder{
+ private static final DataSetChangedAdapter INSTANCE = new DataSetChangedAdapter();
+ }
+
+ private IMogoDataChangedListener mDelegate;
+
+ public void setDelegate( IMogoDataChangedListener delegate ) {
+ this.mDelegate = delegate;
+ }
+
+ public static DataSetChangedAdapter getInstance(){
+ return InstanceHolder.INSTANCE;
+ }
+
+ @Override
+ public void onDataSetChanged( Object data ) {
+ mData = data;
+ if ( mDelegate != null ) {
+ mDelegate.onDataSetChanged( data );
+ }
+ }
+
+ public Object getData() {
+ return mData;
+ }
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java
index 92dd6cd3ea..fe60b59266 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java
@@ -55,6 +55,7 @@ import com.mogo.module.common.entity.MarkerUserInfo;
import com.mogo.module.service.receiver.MogoReceiver;
import com.mogo.module.share.ShareControl;
import com.mogo.module.tanlu.R;
+import com.mogo.module.tanlu.callback.DataSetChangedAdapter;
import com.mogo.module.tanlu.callback.NaviCallback;
import com.mogo.module.tanlu.callback.RoadLineCallback;
import com.mogo.module.tanlu.callback.UploadShareCallback;
@@ -77,6 +78,8 @@ import com.mogo.module.tanlu.view.AutoZoomInImageView;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
+import com.mogo.service.datamanager.IMogoDataChangedListener;
+import com.mogo.service.datamanager.IMogoDataManager;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
import com.mogo.service.imageloader.IMogoImageloader;
@@ -117,7 +120,8 @@ public class TanluCardViewFragment extends MvpFragment>
IMogoMapListener,
IMogoPoiSearchListener,
IMogoLocationListener,
- View.OnClickListener {
+ View.OnClickListener,
+ IMogoDataChangedListener {
private static final String TAG = "TanluCardViewFragment";
SimpleCoverVideoPlayer simpleCoverVideoPlayer;
@@ -295,6 +299,7 @@ public class TanluCardViewFragment extends MvpFragment>
}
}
});
+ DataSetChangedAdapter.getInstance().setDelegate( this );
}
@Override
@@ -307,6 +312,8 @@ public class TanluCardViewFragment extends MvpFragment>
initMap();
initStrings();
initListener();
+ // 数据先到,卡片后创建
+ initData( DataSetChangedAdapter.getInstance().getData() );
}
private void initModelData() {
@@ -744,23 +751,20 @@ public class TanluCardViewFragment extends MvpFragment>
isCurrentPage = true;
Logger.d(TAG, "tanlu卡片 onPerform 有效 ---->");
- mMarkerManager = mMogoMapService.getMarkerManager(getActivity());
- List markers = mMarkerManager.getMarkers(TanluConstants.MODEL_NAME);
+ renderCardViews();
+ }
- if (markers != null && markers.size() > 0) {
+ /**
+ * 根究数据展示页面
+ */
+ private void renderCardViews(){
+ if (markerExploreWayList != null && markerExploreWayList.size() > 0) {
mEmptyLayout.setVisibility(View.GONE);
mRootLayout.setVisibility(View.VISIBLE);
- Logger.d(TAG, "onPerform markers.size() =" + markers.size());
- for (int i = 0; i < markers.size(); i++) {
- MarkerExploreWay exploreWay = extractFromMarker(markers.get(i));
- if (exploreWay == null) {
- break;
- }
- markerExploreWayList.add(exploreWay);
- }
+ Logger.d(TAG, "onPerform markers.size() =" + markerExploreWayList.size());
Log.d("TAG", "tanlu卡片 onPerform 有效 markerExploreWayList.size() =" + markerExploreWayList.size());
- if (markers.size() == 1) {
+ if (markerExploreWayList.size() == 1) {
mPreviousTv.setVisibility(View.GONE);
mNextTv.setVisibility(View.GONE);
} else {
@@ -778,6 +782,28 @@ public class TanluCardViewFragment extends MvpFragment>
}
}
+ @Override
+ public void onDataSetChanged( Object data ) {
+ Logger.d( TAG, "receive data changed." );
+ initData( data );
+ if ( isCurrentPage ) {
+ renderCardViews();
+ }
+ }
+
+ private void initData(Object data ){
+ if ( markerExploreWayList != null ) {
+ markerExploreWayList.clear();
+ } else {
+ markerExploreWayList = new ArrayList<>();
+ }
+ try {
+ markerExploreWayList.addAll( (List)data );
+ } catch ( Exception e ) {
+ Logger.e( TAG, e, "error." );
+ }
+ }
+
/**
* 离开C位事件
*/
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java
index cdc123a787..645707060f 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java
@@ -11,6 +11,7 @@ import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoNaviListener;
+import com.mogo.module.tanlu.callback.DataSetChangedAdapter;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.module.ModuleType;
@@ -40,6 +41,7 @@ public class TanluCardViewProvider implements IMogoModuleProvider {
@Override
public void init( Context context ) {
TanluServiceHandler.init( context );
+ TanluServiceHandler.getDataManager().registerDataListener( TanluConstants.MODEL_NAME, DataSetChangedAdapter.getInstance() );
Logger.d(TAG, "init ----------> ");
}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluServiceHandler.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluServiceHandler.java
index c066dbb319..d93a4bec33 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluServiceHandler.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluServiceHandler.java
@@ -10,6 +10,8 @@ import com.mogo.map.search.poisearch.IMogoPoiSearch;
import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.service.MogoServicePaths;
+import com.mogo.service.datamanager.IMogoDataChangedListener;
+import com.mogo.service.datamanager.IMogoDataManager;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.map.IMogoMapService;
@@ -28,6 +30,7 @@ public class TanluServiceHandler {
private static IMogoNavi mNavi;
private static IMogoMapUIController mMapUIController;
private static IMogoImageloader mImageloader;
+ private static IMogoDataManager mDataManager;
public static void init( Context context ) {
mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context );
@@ -38,6 +41,7 @@ public class TanluServiceHandler {
mMarkerManager = mMapService.getMarkerManager( context );
mNavi = mMapService.getNavi( context );
mMapUIController = mMapService.getMapUIController();
+ mDataManager = (IMogoDataManager)ARouter.getInstance().build( MogoServicePaths.PATH_DATA_MANAGER ).navigation(context);
}
public static IMogoMapService getMapService() {
@@ -67,4 +71,8 @@ public class TanluServiceHandler {
public static IMogoImageloader getImageloader() {
return mImageloader;
}
+
+ public static IMogoDataManager getDataManager() {
+ return mDataManager;
+ }
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataChangedListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataChangedListener.java
index 164a427105..2e2d76ff12 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataChangedListener.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataChangedListener.java
@@ -13,7 +13,7 @@ public interface IMogoDataChangedListener {
/**
* 大而全数据变化回调
*
- * @param datums
+ * @param data
*/
- void onDataSetChanged( List< Object > datums );
+ void onDataSetChanged( Object data );
}