我正在使用phonegap创建一个Android应用。每当我在我的应用程序中按下主页按钮然后尝试再打开应用程序时,我会得到一个白色的空白屏幕 - 只有在触摸屏幕时才会消失。 看一下logcat,我在触摸屏幕后收到一条消息说blockWebkitDraw已锁定。
如果我按下后退按钮退出应用程序然后返回 - 它工作正常,所以真的不确定为什么它对主页按钮不起作用。
这是我在清单中的活动:
<activity android:name=".PhoneGapActivity" android:launchMode="singleTop" android:configChanges="orientation|keyboardHidden|screenLayout|screenSize">
<intent-filter>
<action android:name="com.matt.android.theAppName.MESSAGE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
有效的一件事是覆盖暂停方法:
@Override
public void onPause() {
super.onPause();
this.finish();
}
但这会使活动重启 - 这并不理想。
如果有人知道为什么会这样,我真的很感激任何意见,谢谢。
编辑:
onCreate方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
int splashImageResourceIdentifier = getResources().getIdentifier("splash", "drawable", getPackageName());
if (splashImageResourceIdentifier != 0) {
super.setIntegerProperty("splashscreen", splashImageResourceIdentifier);
super.loadUrl(WORK_DIR + getStartFileName(), 10000);
} else {
super.loadUrl(WORK_DIR + getStartFileName());
}
super.setIntegerProperty("loadUrlTimeoutValue", 60000);
this.appView.clearCache(false);
this.appView.clearHistory();
// Set some defaults
this.appView.setHorizontalScrollBarEnabled(false);
this.appView.setHorizontalScrollbarOverlay(false);
this.appView.setVerticalScrollBarEnabled(false);
this.appView.setVerticalScrollbarOverlay(false);
if (getIntent().hasExtra(Constants.EVENT.MESSAGE_RECEIVED)) {
// Application is started by clicking on notification
PushNotifications.handleMessage(getIntent());
}
// Set some defaults on the web view
this.appView.getSettings().setBuiltInZoomControls(false);
this.appView.getSettings().setSupportZoom(true);
this.appView.getSettings().setGeolocationEnabled(true);
this.appView.getSettings().setLightTouchEnabled(false);
// Caching is preventin android 2.3.3 from working properly with REST calls (ETST-5834, ETST-6716)
this.appView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
this.appView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
/*
Enabling hardware acceleration to make CSS rules like translate3d work properly.
0x01000000 is actually WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED flag, but it doesn't exist in
android 2.2.1 lib that is present in maven dependency management.
*/
if (android.os.Build.VERSION.SDK_INT >= 11) {
getWindow().setFlags(0x01000000, 0x01000000);
}
}
我在活动中没有onResume方法。