wait to finish

This commit is contained in:
zhongchao
2022-11-10 10:54:57 +08:00
parent 7868bf626f
commit a836c31728
189 changed files with 780 additions and 4887 deletions

View File

@@ -8,9 +8,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.impl.singleton.SingletonsHolder;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.windowview.IMogoWindowManager;
/**
@@ -27,11 +25,6 @@ public class MogoServiceApis implements IMogoServiceApis {
private static final Object sLock = new Object();
@Override
public IMogoStatusManager getStatusManagerApi() {
return SingletonsHolder.get(IMogoStatusManager.class);
}
@Override
public void init(Context context) {
@@ -50,23 +43,14 @@ public class MogoServiceApis implements IMogoServiceApis {
}
private static <T extends IProvider> T getApiInstance(Class<T> clazz, String path) {
T inst = SingletonsHolder.get(clazz);
if (inst == null) {
synchronized (sLock) {
inst = SingletonsHolder.get(clazz);
if (inst != null) {
return inst;
}
T newInst = (T) ARouter.getInstance().build(path).navigation();
try {
SingletonsHolder.registerApi(clazz, newInst);
CallerLogger.INSTANCE.d(TAG, "keep IProvider instance to SingletonHolder: path = " + path);
} catch (Exception e) {
e.printStackTrace();
}
return newInst;
synchronized (sLock) {
T newInst = (T) ARouter.getInstance().build(path).navigation();
try {
CallerLogger.INSTANCE.d(TAG, "keep IProvider instance to SingletonHolder: path = " + path);
} catch (Exception e) {
e.printStackTrace();
}
return newInst;
}
return inst;
}
}
}

View File

@@ -1,34 +0,0 @@
package com.mogo.service.impl.singleton;
import com.alibaba.android.arouter.facade.template.IProvider;
import com.mogo.service.impl.statusmanager.MogoStatusManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author congtaowang
* @since 2020-03-06
* <p>
* 描述
*/
public class SingletonsHolder {
private static final Map<Class, Object> sSingletons = new ConcurrentHashMap<>();
static {
sSingletons.put(IMogoStatusManager.class, new MogoStatusManager());
}
public static <T> T get(Class<T> clazz) {
return (T) sSingletons.get(clazz);
}
public static <T extends IProvider> void registerApi(Class<? extends IProvider> api, T impl) throws Exception {
if (api == null || impl == null) {
return;
}
sSingletons.put(api, impl);
}
}

View File

@@ -1,179 +0,0 @@
package com.mogo.service.impl.statusmanager;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.IMogoStickyStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author congtaowang
* @since 2020-01-02
* <p>
* 状态控制器
*/
public class MogoStatusManager implements IMogoStatusManager {
private static final String TAG = "MogoStatusManager";
/**
* 状态记录
*/
private static final Map< StatusDescriptor, Boolean > mStatus = new ConcurrentHashMap<>();
/**
* 回调集合
*/
private static final Map< StatusDescriptor, List< IMogoStatusChangedListener > > mListeners = new ConcurrentHashMap<>();
/**
* 状态类型修改记录
*/
private static final Map< StatusDescriptor, String > mModifier = new ConcurrentHashMap<>();
@Override
public boolean isVoiceShow() {
return get_bool_val( StatusDescriptor.VOICE_UI );
}
@Override
public boolean isVrMode() {
return get_bool_val(StatusDescriptor.VR_MODE);
}
@Override
public boolean isV2XShow() {
return get_bool_val( StatusDescriptor.V2X_UI );
}
@Override
public boolean isAccOn() {
return get_bool_val( StatusDescriptor.ACC_STATUS );
}
@Override
public boolean isMainPageOnResume() {
return get_bool_val( StatusDescriptor.MAIN_PAGE_RESUME );
}
@Override
public boolean isMainPageIsBackground() {
return get_bool_val( StatusDescriptor.MAIN_PAGE_IS_BACKGROUND );
}
@Override
public boolean isMainPageLaunched() {
return get_bool_val( StatusDescriptor.MAIN_PAGE_CREATED );
}
private boolean get_bool_val(StatusDescriptor descriptor ) {
Boolean val = mStatus.get( descriptor );
return val != null && val;
}
@Override
public void setVrMode(String tag, boolean vrMode) {
doSetStatus(tag, StatusDescriptor.VR_MODE, vrMode);
}
@Override
public void setVoiceUIShow( String tag, boolean show ) {
doSetStatus( tag, StatusDescriptor.VOICE_UI, show );
}
@Override
public void setV2XUIShow( String tag, boolean show ) {
doSetStatus( tag, StatusDescriptor.V2X_UI, show );
}
@Override
public void setAccStatus( String tag, boolean isOn ) {
doSetStatus( tag, StatusDescriptor.ACC_STATUS, isOn );
}
@Override
public void setMainPageResumeStatus( String tag, boolean resume ) {
doSetStatus( tag, StatusDescriptor.MAIN_PAGE_RESUME, resume );
}
@Override
public void setMainPageIsBackgroundStatus(String tag, boolean isBackground) {
doSetStatus( tag, StatusDescriptor.MAIN_PAGE_IS_BACKGROUND, isBackground );
}
@Override
public void setAIAssistReady( String tag, boolean ready ) {
doSetStatus( tag, StatusDescriptor.AI_ASSIST_READY, ready );
}
@Override
public void setSeekHelping( String tag, boolean seekHelping ) {
doSetStatus( tag, StatusDescriptor.SEEK_HELPING, seekHelping );
}
@Override
public void setMainPageLaunchedStatus( String tag, boolean launched ) {
doSetStatus( tag, StatusDescriptor.MAIN_PAGE_CREATED, launched );
}
private void doSetStatus( String tag, StatusDescriptor target, boolean value ) {
mStatus.put( target, value );
invokeStatusChangedListener( target, value );
recordStatusModifier( tag, target );
}
private void invokeStatusChangedListener( StatusDescriptor descriptor, boolean status ) {
List< IMogoStatusChangedListener > listenerList = mListeners.get( descriptor );
if ( listenerList != null && listenerList.size() > 0 ) {
IMogoStatusChangedListener[] listeners = new IMogoStatusChangedListener[listenerList.size()];
listenerList.toArray( listeners );
for ( IMogoStatusChangedListener listener : listeners ) {
if ( listener != null ) {
listener.onStatusChanged( descriptor, status );
}
}
}
}
private void recordStatusModifier( String tag, StatusDescriptor descriptor ) {
mModifier.put( descriptor, tag );
}
@Override
public void registerStatusChangedListener( String tag, StatusDescriptor descriptor, IMogoStatusChangedListener listener ) {
if ( listener == null || descriptor == null ) {
return;
}
if ( !mListeners.containsKey( descriptor ) ) {
mListeners.put( descriptor, new ArrayList<>() );
}
mListeners.get( descriptor ).add( listener );
if ( listener instanceof IMogoStickyStatusChangedListener && ((IMogoStickyStatusChangedListener)listener).requestStickyStatus( descriptor ) ) {
Boolean val = mStatus.get( descriptor );
if ( val != null ) {
listener.onStatusChanged( descriptor, get_bool_val( descriptor ) );
}
}
}
@Override
public void unregisterStatusChangedListener( String tag, StatusDescriptor descriptor, IMogoStatusChangedListener listener ) {
if ( mListeners.get( descriptor ) != null ) {
mListeners.get( descriptor ).remove( listener );
}
}
@Override
public void init( Context context ) {
}
}