Tencent / VasSonic

VasSonic is a lightweight and high-performance Hybrid framework developed by tencent VAS team, which is intended to speed up the first screen of websites working on Android and iOS platform.
Other
11.8k stars 1.61k forks source link

E/SonicSdk_SonicEngine: createSession fail for sonic service is unavailable! #295

Closed LoobyH closed 5 years ago

LoobyH commented 5 years ago

我根据集成指导集成后,apk第一次装载后跳网页会出现这个错误,之后就不会出现,我是android集成

下面是错误日志: E/SonicSdk_SonicEngine: createSession fail for sonic service is unavailable! D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.sanweiyun.app, PID: 13891 java.lang.UnknownError: create session fail! at com.sanweiyun.app.ui.activity.webview.BrowserActivity.onCreate(BrowserActivity.java:91) at android.app.Activity.performCreate(Activity.java:7372) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302) at android.app.ActivityThread.-wrap12(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891) at android.os.Handler.dispatchMessage(Handler.java:108) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7425) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921) E/CustomActivityOnCrash: App has crashed, executing CustomActivityOnCrash's UncaughtExceptionHandler java.lang.UnknownError: create session fail! at com.sanweiyun.app.ui.activity.webview.BrowserActivity.onCreate(BrowserActivity.java:91) at android.app.Activity.performCreate(Activity.java:7372)

public class BrowserActivity extends Activity {

public final static String PARAM_URL = "param_url";

public final static String PARAM_MODE = "param_mode";

private SonicSession sonicSession;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    String url = intent.getStringExtra(PARAM_URL);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

    // init sonic engine if necessary, or maybe u can do this when application created
    if (!SonicEngine.isGetInstanceAllowed()) {
        SonicEngine.createInstance(new SonicRuntimeImpl(getApplication()), new SonicConfig.Builder().build());
    }

    SonicSessionClientImpl sonicSessionClient = null;

    // if it's sonic mode , startup sonic session at first time
    SonicSessionConfig.Builder sessionConfigBuilder = new SonicSessionConfig.Builder();
    // create sonic session and run sonic flow
    sonicSession = SonicEngine.getInstance().createSession(url, sessionConfigBuilder.build());
    if (null != sonicSession) {
        sonicSession.bindClient(sonicSessionClient = new SonicSessionClientImpl());
    } else {
        // this only happen when a same sonic session is already running,
        // u can comment following code to feedback for default mode to
        throw new UnknownError("create session fail!");                          <--------(BrowserActivity.java:91)
    } 
marlonlu commented 5 years ago

第一次启用时有一个准备过程,我们实际项目工程中如果判断session为空,则走直连打开,不需抛异常来中断程序