Android上的Worklight应用程序启动屏幕
我正在为Android应用程序使用Worklight 当我尝试添加启动屏幕时Android上的Worklight应用程序启动屏幕,android,cordova,splash-screen,ibm-mobilefirst,Android,Cordova,Splash Screen,Ibm Mobilefirst,我正在为Android应用程序使用Worklight 当我尝试添加启动屏幕时 public class MyApp extends WLDroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setIntegerProperty("splashscreen", R.drawable.s
public class MyApp extends WLDroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl(getWebMainFilePath(),2000);
}
}
我看到了闪屏,但随后,我看到了一个黑屏,应用程序崩溃了
准确地说,它显示一个黑屏,当我点击选项按钮时,它崩溃了
当我删除“2000”时
我看不到启动屏幕,应用程序正常工作
我看到有人
还有很多博客帖子都在谈论SplashScreens for Android和PhoneGap
而且,我在这些帖子中没有看到解决我问题的方法
以下是崩溃后的应用程序日志:
I/SurfaceFlinger( 93): [SurfaceFlinger] frames:2, duration:2.262000, fps:0.883908
I/InputDispatcher( 246): channel '426b7be0 NavigationBar (server)' ~ finishDispatchCycle - 4.8ms since event, 3.0ms since dispatch, handled=true
E/AndroidRuntime(15615): FATAL EXCEPTION: main
E/AndroidRuntime(15615): java.lang.NullPointerException
E/AndroidRuntime(15615): at com.worklight.androidgap.WLDroidGap.onPrepareOptionsMenu(WLDroidGap.java:163)
E/AndroidRuntime(15615): at com.worklight.androidgap.WLDroidGap.onCreateOptionsMenu(WLDroidGap.java:159)
E/AndroidRuntime(15615): at android.app.Activity.onCreatePanelMenu(Activity.java:2458)
E/AndroidRuntime(15615): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:389)
E/AndroidRuntime(15615): at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:770)
E/AndroidRuntime(15615): at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1435)
E/AndroidRuntime(15615): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1824)
E/AndroidRuntime(15615): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3492)
E/AndroidRuntime(15615): at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3464)
E/AndroidRuntime(15615): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2601)
E/AndroidRuntime(15615): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(15615): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(15615): at android.app.ActivityThread.main(ActivityThread.java:4524)
E/AndroidRuntime(15615): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(15615): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(15615): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
E/AndroidRuntime(15615): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
E/AndroidRuntime(15615): at dalvik.system.NativeStart.main(Native Method)
我不知道这是否会有帮助,但我是这样做的。也许你应该试试这个:
setContentView(R.layout.splash_screen);
Handler handler = new Handler();
// 3 seconds later splashscreen will open
handler.postDelayed(new Runnable() {
public void run() {
finish();
// to pass main screen
Intent intent = new Intent(SplashScreen.this, AnaMenuActivity.class);
SplashScreen.this.startActivity(intent);
}
}, 3000);
如果您使用的是Worklight 5.0.5.x,请尝试以下操作:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl(getWebMainFilePath()); // yes, this is an extra invocation
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl(getWebMainFilePath(), 5000);
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.bindBrowser(appView);
super.loadUrl(getWebMainFilePath(), 5000);
}
如果您使用的是Worklight 5.0.6.x,请尝试以下操作:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl(getWebMainFilePath()); // yes, this is an extra invocation
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl(getWebMainFilePath(), 5000);
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.bindBrowser(appView);
super.loadUrl(getWebMainFilePath(), 5000);
}
您还可以编写自己的JavaScript启动屏幕。 它们不像本地的闪屏那么好,但在我看来值得一提。 他们也在x平台上工作。下面是一个dojo示例
<div id="splash"></div>
function dojoInit() {
require([ "dojo", ...modules... ], function(dojo) {
dojo.ready(function() {
hideSplash();
});
});
}
function hideSplash(){
// Dojo Fade Animation
dojo.fadeOut({
node:"splash",
onEnd: function(){
dojo.style("splash", "display", "none");
}
}).play();
}
如果您使用的是6.0+,则不需要编写任何本机代码。只需在android原生目录(android/native/res/drawable)下放置一个名为“splash.png”的资源,并删除默认资源。启动应用程序时,Worklight会自动将pic显示为初始屏幕。您能提供崩溃日志吗?@Alécio我编辑了这个问题,添加了崩溃日志。我使用的是Wokllight 6.0.0,但这些代码片段都不起作用。我已经在Worklight 6.0.0上尝试过了,现在正在使用,但它不起作用