ffos中WebAPI回调不能执行

问题描述:在js中使用dom组件,将js中的一个函数作为回调函数设置给dom组件;在主线程中调用这个回调函数没有问题,但是如果在另一个线程里面调用这个回调函数则总是失败。

原因:没有在主线程调用导致!

一、如何查看

1.直接在程序中上下文打印

root@android:/ # TVMSFmanagertest                                              

>>>[tv_display] VideoHole is 0 0 1919 1079
>>>[tv_display] VideoAxis is 0 0 1919 1079
##########TK------->>>>>########gettid is 3130  //register线程号是3130
************start test interface and function***************
please input 0 1 to 5
0 is exit!
1 pindao jia
2 pindao jian
3 xuanze pindao
4 getCurrentProgramInfo
5 dtvFullScan
6 dtvManualScan
8 dtvStopScan
7 getProgramCount
5
############---TK--------->>>>gettid is 3131  //回调这里是3131
############---TK--------->>>>gettid is 3132
############---TK--------->>>>gettid is 3131
############---TK--------->>>>gettid is 3132
############---TK--------->>>>gettid is 3131
############---TK--------->>>>gettid is 3132
############---TK--------->>>>gettid is 3131
############---TK--------->>>>gettid is 3132

2.proc文件系统

cat /proc/3130/status                                         

Name:	TVMSFmanagertes
State:	S (sleeping)
Tgid:	3130
Pid:	3130
PPid:	3026
TracerPid:	0
Uid:	0	0	0	0
Gid:	0	0	0	0
FDSize:	32
Groups:	
VmPeak:	    6032 kB
VmSize:	    6032 kB
VmLck:	       0 kB
VmHWM:	    1216 kB
VmRSS:	    1216 kB
VmData:	    2256 kB
VmStk:	     136 kB
VmExe:	      28 kB
VmLib:	    2308 kB
VmPTE:	      10 kB
VmSwap:	       0 kB
Threads:	3       //一共有三个线程!!!!!
SigQ:	0/5812
SigPnd:	0000000000000000
ShdPnd:	0000000000000000
SigBlk:	0000000000000000
SigIgn:	0000000000000000
SigCgt:	00000000000094e8
CapInh:	0000000000000000
CapPrm:	ffffffffffffffff
CapEff:	ffffffffffffffff
CapBnd:	ffffffffffffffff
Cpus_allowed:	3
Cpus_allowed_list:	0-1
voluntary_ctxt_switches:	110
nonvoluntary_ctxt_switches:	54

二、解决办法

调用DOM组件提供的方法:NS_DispatchToMainThread;将需要执行的JS部分回调函数放入主线程上下文。

三、其他问题

  上述问题解决以后,发现在回调函数执行到二十次左右时仍然会挂掉,通过打印、发现回调部分函数指针为NULL;后经过分析,ffos引入了智能指针功能,当不再使用时、自动release资源。

  后来,将该回调指针引入智能模板,问题解决。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值