From 0375d7a8d8ba7ff9ed478173c1a76ef93a6f202a Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 29 Jun 2020 15:45:36 +0800 Subject: [PATCH] opt --- .../module/apps/AppNavigatorPresenter.java | 2 +- .../mogo/module/apps/AppsListActivity.java | 1 - .../com/mogo/module/apps/AppsPresenter.java | 31 ++++++++++++++++++- .../com/mogo/module/apps/model/AppInfo.java | 18 ++++++++++- .../com/mogo/module/apps/model/AppsModel.java | 13 ++++---- .../src/main/res/layout/view_map_marker.xml | 6 ++-- .../main/res/layout/view_map_marker_info.xml | 4 +-- .../src/main/res/values-xhdpi/dimens.xml | 4 +-- .../src/main/res/values/dimens.xml | 4 +-- 9 files changed, 63 insertions(+), 20 deletions(-) diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java index de53733b66..7b39a6b5a3 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorPresenter.java @@ -40,7 +40,7 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme AppServiceHandler.getApis().getRegisterCenterApi().registerMogoNaviListener( TAG, this ); if ( DebugConfig.isLauncher() ) { // 预加载应用列表,空间换时间 -// AppsModel.getInstance( getContext() ).load( null ); + AppsModel.getInstance( getContext() ).load( null ); } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java index 80ad419ea4..34a738ac9e 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListActivity.java @@ -113,7 +113,6 @@ public class AppsListActivity extends MvpActivity< AppsListView, AppsListPresent @Override protected void onDestroy() { super.onDestroy(); - AppsModel.getInstance( this ).release(); AppServiceHandler.getApis().getStatusManagerApi().setAppListUIShow( TAG, false ); mMogoFragmentManager.removeMainFragmentStackTransactionListener( this ); mMogoFragmentManager = null; diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java index 942568fc7f..87d43203e1 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java @@ -80,6 +80,11 @@ public class AppsPresenter extends Presenter< AppsView > { Logger.d( TAG, "apps: %s", appInfoList ); final Map< Integer, List< AppInfo > > result = addOthersEntrances( appInfoList ); + try { + filterSamePackage( result ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } UiThreadHandler.post( () -> { if ( mView != null ) { mView.renderApps( result ); @@ -143,7 +148,7 @@ public class AppsPresenter extends Presenter< AppsView > { } } } -// growthCapacity( result ); +// growthCapacity( result ) // // 添加介绍入口 // result.get( result.size() - 1 ).add( new AppInfo( GuideShowLauncher.APP_INFO_NAME_GUIDE_SHOW, getContext().getPackageName(), null, 0, null, R.drawable.module_apps_ic_guide_show ) ); if ( DebugConfig.isDebug() ) { @@ -154,6 +159,30 @@ public class AppsPresenter extends Presenter< AppsView > { return result; } + private void filterSamePackage( Map< Integer, List< AppInfo > > appInfoMap ) { + if ( appInfoMap == null || appInfoMap.isEmpty() ) { + return; + } + for ( Map.Entry< Integer, List< AppInfo > > integerListEntry : appInfoMap.entrySet() ) { + if ( integerListEntry == null ) { + continue; + } + List< AppInfo > oldList = integerListEntry.getValue(); + if ( oldList == null + || oldList.size() > AppsConst.TOTAL_SIZE_EACH_PAGE ) { + return; + } + List< AppInfo > appInfos = new ArrayList<>(); + for ( AppInfo appInfo : oldList ) { + if ( appInfos.contains( appInfo ) ) { + continue; + } + appInfos.add( appInfo ); + } + integerListEntry.setValue( appInfos ); + } + } + /** * 扩容 * diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java index d9fddafb98..dae51ba27d 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppInfo.java @@ -1,6 +1,9 @@ package com.mogo.module.apps.model; import android.graphics.drawable.Drawable; +import android.text.TextUtils; + +import java.util.Objects; /** * @author congtaowang @@ -29,7 +32,7 @@ public class AppInfo { } public AppInfo( String mName, String mPackageName, String mVersionName, int mVersionCode, Drawable mIcon, int mIconResId ) { - this(mName, mPackageName, mVersionName, mVersionCode, mIcon, mIconResId, 0); + this( mName, mPackageName, mVersionName, mVersionCode, mIcon, mIconResId, 0 ); } public int getIconResId() { @@ -60,6 +63,19 @@ public class AppInfo { return mTrackType; } + @Override + public boolean equals( Object o ) { + if ( this == o ) return true; + if ( o == null || getClass() != o.getClass() ) return false; + AppInfo appInfo = ( AppInfo ) o; + return TextUtils.equals( mPackageName, appInfo.mPackageName ); + } + + @Override + public int hashCode() { + return Objects.hash( mPackageName ); + } + @Override public String toString() { return "AppInfo{" + diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java index ee047a2bb7..61c55a981d 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppsModel.java @@ -63,16 +63,15 @@ public class AppsModel { } public void load( AppLoadCallback callback ) { -// if ( !mPagedApps.isEmpty() ) { -// if ( callback != null ) { -// callback.onLoaded( mPagedApps ); -// } -// return; -// } + if ( !mPagedApps.isEmpty() ) { + if ( callback != null ) { + callback.onLoaded( mPagedApps ); + } + return; + } if ( mAppFilter == null ) { mAppFilter = new AppFilterImpl( mContext ); } - mPagedApps.clear(); final PackageManager packageManager = mContext.getPackageManager(); List< PackageInfo > packages = packageManager.getInstalledPackages( 0 ); int counter = 0; diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml b/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml index 3ba8e4a5cf..7651639cf3 100644 --- a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml +++ b/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml @@ -17,11 +17,11 @@ + tools:src="@drawable/icon_map_marker_road_block_up2" /> diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml b/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml index 028892962e..444e398c97 100644 --- a/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml +++ b/modules/mogo-module-service/src/main/res/layout/view_map_marker_info.xml @@ -32,8 +32,8 @@ 8dp 100px 117px - 50px - 50px + 60px + 60px 8px diff --git a/modules/mogo-module-service/src/main/res/values/dimens.xml b/modules/mogo-module-service/src/main/res/values/dimens.xml index 03b1e6650a..6faf47f1e0 100644 --- a/modules/mogo-module-service/src/main/res/values/dimens.xml +++ b/modules/mogo-module-service/src/main/res/values/dimens.xml @@ -4,8 +4,8 @@ 4dp 56px 65px - 27px - 27px + 35px + 35px 4px 550px