我的应用启动SplashActivity
后跟MainActivity
。我在branch.initSession
中运行SplashActivity
但是它需要大约1.5秒才能返回到监听器,这会延迟MainActivity
的启动。我想减少这个时间。
我的想法是:
branch.initSession
中的MainActivity
。branch.initSession
中运行SplashActivity
,启动MainActivity
,然后使用eventbus将分支传递给MainActivity
进行处理。有没有人就如何解决这个问题提出任何建议?
干杯,杜安。
答案 0 :(得分:1)
来自Branch的Amruta。
默认情况下,Branch将延迟安装调用最多1.5秒。我们延迟安装调用以捕获通过Google Play传递的安装引荐来源字符串,这会增加归因并推迟深度链接的准确性。我们不会延迟任何其他呼叫,并且安装呼叫仅在用户首次打开您的应用时发生。
如果我们在1.5秒之前收到引荐来源字符串,我们将立即触发呼叫,这意味着此延迟最多为1.5秒,但不能保证花费那么长时间。
如果您想优化第一次安装调用,只需将以下代码粘贴到Application类中,我们就不会延迟第一次安装调用。
public final class CustomApplicationClass {
@Override
public void onCreate() {
super.onCreate();
// initialize the Branch object
Branch.setPlayStoreReferrerCheckTimeout(0);
Branch.getAutoInstance(this);
}
}
答案 1 :(得分:0)
我的解决方案是:
我不确定这是不是很好的做法,但我认为它比添加Event Bus库更简单。很高兴听到一些反馈。
应用程序类:
public class MyApp extends Application {
private Listener branchListener = null;
public interface Listener {
void onBranchLinkReceived(JSONObject params, BranchError error);
}
public void registerBranchListener(Listener listener) {
branchListener = listener;
}
public void unregisterBranchListener() {
branchListener = null;
}
public boolean branchLinkReceived(JSONObject params, BranchError error) {
if (branchListener != null) {
branchListener.onBranchLinkReceived(params, error);
return true;
}
return false;
}
@Override
public void onCreate() {
Branch.getAutoInstance(this);
...
}
}
在启动活动中:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Branch branch = Branch.getInstance();
branch.initSession(new Branch.BranchReferralInitListener(){
@Override
public void onInitFinished(JSONObject params, BranchError error) {
if (error == null) {
if (firstLaunch) {
processParamsInSplashActivity(params);
} else {
boolean isProcessed = ((MyApp) getApplication()).branchLinkReceived(params, error);
}
}
}, this.getIntent().getData(), this);
}
}
}
在MainActivity中:
public class MainActivity extends AppCompatActivity implements MyApp.Listener {
@Override
protected void onCreate(Bundle savedInstanceState) {
((MyApp) getApplication()).registerBranchListener(this);
...
}
@Override
protected void onDestroy() {
((MyApp) getApplication()).unregisterBranchListener();
super.onDestroy();
}
@Override
public void onBranchLinkReceived(JSONObject params, BranchError error) {
Log.d("MainActivity", "Branch link received: " + params);
}
}