嗨,我有一个非常基本的Titanium应用程序。有3个Web视图。当从一开始就有wifi时,所有三个Web视图都会正常加载。我检查了我的代码,只有在有互联网连接的情况下才会添加webview。如果没有,我添加标签说明连接到互联网和刷新按钮。当我单击刷新按钮时,添加Web视图会使应用程序崩溃。代码适用于iOS,而不是Android。使用SDK 3.2.3。代码如下:
refresh.addEventListener("click", function (e){
if(Ti.Network.online){
console.log(" here 1 -----------");
Navbar.remove(refresh);
console.log(" here 2 -----------");
self.remove(NoInternet_view);
console.log(" here 3 -----------");
self.add(shopWebView);
console.log(" here 4 -----------");
}
else{
alert("An internet connection is required");
}
});
日志到达打印输出"这里3 ----------"然后崩溃。
相关日志:
F/libc (12588): Fatal signal 11 (SIGSEGV) at 0x0000000c (code=1), thread 12612 (KrollRuntimeThr)
[INFO][DEBUG ( 1764)] *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
[INFO][DEBUG ( 1764)] Build fingerprint: 'samsung/lt01wifixx/lt01wifi:4.2.2/JDQ39/T310XXUAMF1:user/release-keys'
[INFO][DEBUG ( 1764)] Revision: '6'
[INFO][DEBUG ( 1764)] pid: 12588, tid: 12612, name: KrollRuntimeThr >>> com.girt.cuddles <<<
[INFO][DEBUG ( 1764)] signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000c
[INFO][DEBUG ( 1764)] r0 00000000 r1 5e93c4e8 r2 000000aa r3 00000001
[INFO][DEBUG ( 1764)] r4 00000000 r5 5a386ec8 r6 5e49f9bc r7 00000000
[INFO][DEBUG ( 1764)] r8 5e49f88f r9 5e49f870 sl 5e49f9bc fp 5eb506a5
[INFO][DEBUG ( 1764)] ip 5ea062f8 sp 5e49f818 lr 5e518473 pc 5e518284 cpsr 40000030
[INFO][DEBUG ( 1764)] d0 0000000000000000 d1 4018000000000000
[INFO][DEBUG ( 1764)] d2 0000000000000000 d3 000f4240003d0900
[INFO][DEBUG ( 1764)] d4 0000000000000001 d5 3ff0000000000000
[INFO][DEBUG ( 1764)] d6 0000860100000000 d7 0000860100000000
[INFO][DEBUG ( 1764)] d8 0000000000000000 d9 0000000000000000
[INFO][DEBUG ( 1764)] d10 0000000000000000 d11 0000000000000000
[INFO][DEBUG ( 1764)] d12 0000000000000000 d13 0000000000000000
[INFO][DEBUG ( 1764)] d14 0000000000000000 d15 0000000000000000
[INFO][DEBUG ( 1764)] d16 0000000000000001 d17 0000000000000000
[INFO][DEBUG ( 1764)] d18 0000000000004001 d19 0000000000000000
[INFO][DEBUG ( 1764)] d20 3fc554e7eb0eb47c d21 3e66376972bea4d0
[INFO][DEBUG ( 1764)] d22 3f4de16b9c24a98f d23 3fb0f4a31edab38b
[INFO][DEBUG ( 1764)] d24 3fede16b9c24a98f d25 3fe55559ee5e69f9
[INFO][DEBUG ( 1764)] d26 0000000000000000 d27 0000000000000000
[INFO][DEBUG ( 1764)] d28 0000000000000000 d29 0000000000000000
[INFO][DEBUG ( 1764)] d30 0000000000000000 d31 0000000000000000
[INFO][DEBUG ( 1764)] scr 60000013
[INFO][DEBUG ( 1764)]
[INFO][DEBUG ( 1764)] backtrace:
[INFO][DEBUG ( 1764)] #00 pc 00078284 /data/app-lib/com.girt.cuddles-1/libkroll-v8.so (titanium::EventEmitter::~EventEmitter()+71)
[INFO][DEBUG ( 1764)] #01 pc 0007846f /data/app-lib/com.girt.cuddles-1/libkroll-v8.so (titanium::JavaObject::getJavaObject()+58)
[INFO][DEBUG ( 1764)] #02 pc 0007e157 /data/app-lib/com.girt.cuddles-1/libkroll-v8.so (titanium::TypeConverter::jsValueToJavaObject(_JNIEnv*, v8::Local<v8::Value>, bool*)+302)
[INFO][DEBUG ( 1764)] #03 pc 0009a2f9 /data/app-lib/com.girt.cuddles-1/libkroll-v8.so (titanium::TiViewProxy::add(v8::Arguments const&)+332)
[INFO][DEBUG ( 1764)] #04 pc 00171034 /data/app-lib/com.girt.cuddles-1/libkroll-v8.so
[INFO][DEBUG ( 1764)] #05 pc 00067c00 <unknown>
[INFO][DEBUG ( 1764)]
[INFO][DEBUG ( 1764)] stack:
[INFO][DEBUG ( 1764)] 5e49f7d8 40043d5c
[INFO][DEBUG ( 1764)] 5e49f7f4 4094f6e4 /system/lib/libdvm.so
[INFO][DEBUG ( 1764)] 5e49f7f8 00000000
[INFO][DEBUG ( 1764)] 5e49f7fc 59f04dc8
[INFO][DEBUG ( 1764)] 5e49f800 409d1c98 /system/lib/libdvm.so
[INFO][DEBUG ( 1764)] 5e49f804 57225378 /dev/ashmem/dalvik-LinearAlloc (deleted)
[INFO][DEBUG ( 1764)] #00 5e49f818 5ea06218 /data/app-lib/com.girt.cuddles-1/libkroll-v8.so
[INFO][DEBUG ( 1764)] ........ ........
[INFO][BootReceiver( 2125)] Copying /data/tombstones/tombstone_05 to DropBox (SYSTEM_TOMBSTONE)
[INFO][dumpstate(13169)] begin
[WARN][ContextImpl( 2125)] Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1346 com.android.server.analytics.data.collection.application.CrashAnrDetector.broadcastEvent:291 com.android.server.analytics.data.collection.application.CrashAnrDetector.processDropBoxEntry:254 com.android.server.analytics.data.collection.application.CrashAnrDetector.access$100:60 com.android.server.analytics.data.collection.application.CrashAnrDetector$1.onReceive:102
[INFO][Monitor ( 2125)] SIOP:: Current AP = 360, CP = 0
[INFO][dumpstate(13169)] done
[INFO][SurfaceFlinger( 1771)] id=71 Removed UiActivity (2/4)
[INFO][ActivityManager( 2125)] Process com.girt.cuddles (pid 12588) (adj 0) has died.
[WARN][InputDispatcher( 2125)] channel ~ Consumer closed input channel or an error occurred. events=0x9
[ERROR][InputDispatcher( 2125)] channel ~ Channel is unrecoverably broken and will be disposed!
编辑:与地图页面关联的代码:
var removeRefresh = function removeRefresh() {
if(Ti.Network.getOnline()) {
console.log("issue 1-------");
self.remove(NoInternet_view);
console.log("issue 2-------");
self.add(map1);
console.log("issue 3-------");
Navbar.remove(refresh);
console.log("issue 4-------");
}
else alert("An internet connection is required");
};
refresh.addEventListener("click", removeRefresh);
答案 0 :(得分:1)
您正在匿名处理程序中销毁刷新(Ti.UI.Button)。
您可以尝试以下代码:
var removeRefresh = function removeRefresh() {
if(Ti.Network.getOnline()) {
Ti.API.info(" Checkpoint 1 -----------");
self.remove(NoInternet_view);
Ti.API.info(" Checkpoint 2 -----------");
self.add(shopWebView);
Ti.API.info(" Checkpoint 3 -----------");
Navbar.remove(refresh);
Ti.API.info(" Checkpoint 4 -----------");
}
else alert("An internet connection is required");
};
refresh.addEventListener("click", removeRefresh);
您必须确保存在NoInternet_view和shopWebView。
Titanium Studio Console将显示四条消息(Ti.API.info)