优化Scheme跳转

This commit is contained in:
tongchenfei
2020-11-04 20:31:38 +08:00
parent aaa955a1fd
commit 9ded30cc67
4 changed files with 14 additions and 9 deletions

View File

@@ -23,7 +23,7 @@ public class MainIndependentActivity extends MainActivity {
protected void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
// 独立app需要在onCreate里面增加处理scheme的情况
mPresenter.handleSchemeIntent( getIntent() );
mPresenter.handleSchemeIntent( getIntent(), false );
}
@Override

View File

@@ -334,7 +334,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
protected void onNewIntent( Intent intent ) {
super.onNewIntent( intent );
mPresenter.handleSchemeIntent( intent );
mPresenter.handleSchemeIntent( intent, true );
}
@Override

View File

@@ -61,8 +61,8 @@ public class MainPresenter extends Presenter< MainView > {
mMsgHandler.sendMessageDelayed( msg, 100 );
}
public void handleSchemeIntent( Intent intent ) {
SchemeIntent.getInstance().handle( intent );
public void handleSchemeIntent( Intent intent, boolean isOnNewIntent ) {
SchemeIntent.getInstance().handle( intent, isOnNewIntent );
}
public void initADAS(){

View File

@@ -88,7 +88,12 @@ public class SchemeIntent implements IMogoStatusChangedListener {
}
public void handle( Intent intent ) {
/**
* 处理scheme
* @param intent 跳转的intent
* @param isOnNewIntent 根据这个参数判断是从onCreate过来还是从onNewIntent过来从而可以在{@link #isDelay(Intent, boolean)}里面确定延时逻辑如果是从onNewIntent过来是不需要延时的
*/
public void handle( Intent intent, boolean isOnNewIntent ) {
if ( intent == null || intent.getData() == null ) {
return;
}
@@ -100,7 +105,7 @@ public class SchemeIntent implements IMogoStatusChangedListener {
if ( !mApis.getStatusManagerApi().isMainPageOnResume() ) {
long delay = 0L;
if ( isDelay( intent ) ) {
if ( isDelay( intent, isOnNewIntent ) ) {
delay = 5_000L;
}
mNextIntent = new IntentWrapper( intent, delay );
@@ -127,8 +132,8 @@ public class SchemeIntent implements IMogoStatusChangedListener {
mNextIntent = null;
}
private boolean isDelay(Intent intent ) {
if ( mApis.getStatusManagerApi().isMainPageLaunched() || intent == null || intent.getData() == null ) {
private boolean isDelay(Intent intent, boolean isOnNewIntent ) {
if ( isOnNewIntent || intent == null || intent.getData() == null ) {
return false;
}
Uri target = intent.getData();
@@ -225,7 +230,7 @@ public class SchemeIntent implements IMogoStatusChangedListener {
if ( mNextIntent == null ) {
return;
}
handle( mNextIntent.mIntent );
handle( mNextIntent.mIntent, false );
}, mNextIntent.mDelay );
}
}