JNI 多次调用CallStaticVoidMethod 死机 ,请教!

Timwolee 2010-10-19 04:07:16
我的程序中会,点击一下屏幕,就会调用Jni_PlayMusic(char * buffer,unsigned int length,SFBool bLoop)
方法,一开始还是好的,但是多次调用后会死机,LOG打到SFDEBUG("Jni_PlayMusic====TEST=CC");后面的LOG就都不出来了,请教修改方法,大家帮帮忙。

注:SFDEBUG是打LOG的函数,m_javavm与m_renderObj这两个变量已经在初始化时保存了数据,一开始程序是可以正常运行的。

int Jni_PlayMusic(char * buffer,unsigned int length,SFBool bLoop)
{
long status;
jclass cls;
jmethodID mid;
JNIEnv* Javaenv;
SFDEBUG("Jni_PlayMusic====Start");
SFBool isAttached = SFFalse;

bPlayMusic_Call =SFTrue;
status = (*(JavaVM *)m_javavm)->GetEnv((JavaVM *)m_javavm,(void **) &Javaenv, JNI_VERSION_1_4);
if(status < 0) {
status = (*(JavaVM *)m_javavm)->AttachCurrentThread((JavaVM *)m_javavm,&Javaenv, NULL);
if(status < 0) {
return 0;
}
isAttached = SFTrue;
}
/* Construct a Java string */
cls = (*Javaenv)->GetObjectClass(Javaenv,m_renderObj);
if(!cls) {
if(isAttached) (*(JavaVM *)m_javavm)->DetachCurrentThread((JavaVM *)m_javavm);
return 0;
}
SFDEBUG("Jni_PlayMusic====SU=333");

mid =(*Javaenv)->GetStaticMethodID(Javaenv,cls, "PlayMusic_Native", "([BZ)V");
if (mid !=0) {
jbyteArray jcarr;
SFDEBUG("Jni_PlayMusic====TEST=AA");
jcarr= (*Javaenv)->NewByteArray(Javaenv,length);
SFDEBUG("Jni_PlayMusic====TEST=BB");
(*Javaenv)->SetByteArrayRegion(Javaenv,jcarr,0,length,(jbyte*)buffer);
SFDEBUG("Jni_PlayMusic====TEST=CC");
(*Javaenv)->CallStaticVoidMethod(Javaenv,cls, mid,jcarr,bLoop);
if ((*Javaenv)->ExceptionCheck(Javaenv)==JNI_TRUE)
{
if(isAttached) (*(JavaVM *)m_javavm)->DetachCurrentThread((JavaVM *)m_javavm);
(*Javaenv)->ExceptionDescribe(Javaenv);
(*Javaenv)->ExceptionClear(Javaenv);
SFDEBUG("CALL STATIC METHOD FAILED !!!!!!!!!!!");
return 0;
}
SFDEBUG("Jni_PlayMusic====TEST=DD");
(*Javaenv)->DeleteLocalRef(Javaenv,jcarr);

}
SFDEBUG("Jni_PlayMusic====SUSS=55555");
if(isAttached) (*(JavaVM *)m_javavm)->DetachCurrentThread((JavaVM *)m_javavm);
bPlayMusic_Call =SFFalse;
SFDEBUG("Jni_PlayMusic====end");
return 1;
}
...全文
1017 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangpingzhan 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 timwolee 的回复:]
附上LOG

10-19 17:13:36.762: INFO/From JNI(2483): Jni_PlayMusic====Start
10-19 17:13:36.762: INFO/From JNI(2483): Jni_PlayMusic====SU=333
10-19 17:13:36.762: INFO/From JNI(2483): Jni_PlayMusic====TE……
[/Quote]

楼主你好. 这个问题现在解决没 ? 我有这方面的问题向你请教 .
Timwolee 2010-10-19
  • 打赏
  • 举报
回复
附上LOG

10-19 17:13:36.762: INFO/From JNI(2483): Jni_PlayMusic====Start
10-19 17:13:36.762: INFO/From JNI(2483): Jni_PlayMusic====SU=333
10-19 17:13:36.762: INFO/From JNI(2483): Jni_PlayMusic====TEST=AA
10-19 17:13:36.762: INFO/From JNI(2483): Jni_PlayMusic====TEST=BB
10-19 17:13:36.762: INFO/From JNI(2483): Jni_PlayMusic====TEST=CC
10-19 17:13:36.762: VERBOSE/CATCH ERROR(2483): IS HERE ?
10-19 17:13:36.770: VERBOSE/CATCH ERROR(2483): 111111
10-19 17:13:36.840: INFO/From JNI(2483): Jni_PlayMusic====TEST=EE
10-19 17:13:36.840: INFO/From JNI(2483): Jni_PlayMusic====SUSS=55555
10-19 17:13:36.840: INFO/From JNI(2483): Jni_PlayMusic====end
10-19 17:13:36.848: DEBUG/AudioSink(1055): bufferCount (2) is too small and increased to 4
10-19 17:13:36.950: INFO/From JNI(2483): EVT_POINTER_PRESSED
10-19 17:13:37.004: INFO/From JNI(2483): Jni_PlayMusic====Start
10-19 17:13:37.004: INFO/From JNI(2483): Jni_PlayMusic====SU=333
10-19 17:13:37.004: INFO/From JNI(2483): Jni_PlayMusic====TEST=AA
10-19 17:13:37.004: INFO/From JNI(2483): Jni_PlayMusic====TEST=BB
10-19 17:13:37.004: INFO/From JNI(2483): Jni_PlayMusic====TEST=CC
10-19 17:13:37.727: INFO/From JNI(2483): Jni_PlayMusic====Start
10-19 17:13:37.727: INFO/From JNI(2483): Jni_PlayMusic====SU=333
10-19 17:13:37.731: INFO/From JNI(2483): Jni_PlayMusic====TEST=AA
10-19 17:13:37.731: INFO/From JNI(2483): Jni_PlayMusic====TEST=BB
10-19 17:13:37.731: INFO/From JNI(2483): Jni_PlayMusic====TEST=CC
10-19 17:13:38.450: INFO/From JNI(2483): Jni_PlayMusic====Start
10-19 17:13:38.450: INFO/From JNI(2483): Jni_PlayMusic====SU=333
10-19 17:13:38.450: INFO/From JNI(2483): Jni_PlayMusic====TEST=AA
10-19 17:13:38.450: INFO/From JNI(2483): Jni_PlayMusic====TEST=BB
10-19 17:13:38.450: INFO/From JNI(2483): Jni_PlayMusic====TEST=CC
10-19 17:13:38.489: DEBUG/dalvikvm(1399): GC freed 101 objects / 6208 bytes in 99ms
10-19 17:13:39.176: INFO/From JNI(2483): Jni_PlayMusic====Start
10-19 17:13:39.176: INFO/From JNI(2483): Jni_PlayMusic====SU=333
10-19 17:13:39.176: INFO/From JNI(2483): Jni_PlayMusic====TEST=AA
10-19 17:13:39.176: INFO/From JNI(2483): Jni_PlayMusic====TEST=BB
10-19 17:13:39.176: INFO/From JNI(2483): Jni_PlayMusic====TEST=CC
10-19 17:13:39.898: INFO/From JNI(2483): Jni_PlayMusic====Start
10-19 17:13:39.898: INFO/From JNI(2483): Jni_PlayMusic====SU=333
10-19 17:13:39.898: INFO/From JNI(2483): Jni_PlayMusic====TEST=AA
10-19 17:13:39.898: INFO/From JNI(2483): Jni_PlayMusic====TEST=BB
10-19 17:13:39.898: INFO/From JNI(2483): Jni_PlayMusic====TEST=CC
10-19 17:13:40.469: DEBUG/AudioHardwareMot(1055): AudioMgr:AudioStreamOutMot::standby called
10-19 17:13:40.469: DEBUG/AudioHardwareMot(1055): AudioMgr:Output 0xb538 entering standby
10-19 17:13:40.473: DEBUG/AudioHardwareMot(1055): AudioMgr:Closing stereo device
10-19 17:13:40.622: INFO/From JNI(2483): Jni_PlayMusic====Start
10-19 17:13:40.622: INFO/From JNI(2483): Jni_PlayMusic====SU=333
10-19 17:13:40.622: INFO/From JNI(2483): Jni_PlayMusic====TEST=AA
10-19 17:13:40.622: INFO/From JNI(2483): Jni_PlayMusic====TEST=BB
10-19 17:13:40.622: INFO/From JNI(2483): Jni_PlayMusic====TEST=CC
10-19 17:13:41.344: INFO/From JNI(2483): Jni_PlayMusic====Start
10-19 17:13:41.344: INFO/From JNI(2483): Jni_PlayMusic====SU=333
10-19 17:13:41.344: INFO/From JNI(2483): Jni_PlayMusic====TEST=AA
10-19 17:13:41.344: INFO/From JNI(2483): Jni_PlayMusic====TEST=BB
10-19 17:13:41.344: INFO/From JNI(2483): Jni_PlayMusic====TEST=CC
10-19 17:13:42.110: WARN/WindowManager(1290): Key dispatching timed out sending to com.sfapi/com.sfapi.SFActivity
10-19 17:13:42.110: WARN/WindowManager(1290): Dispatch state: {{KeyEvent{action=1 code=4 repeat=0 meta=0 scancode=158 mFlags=72} to Window{44f07f70 com.android.launcher/com.android.launcher.Launcher paused=false} @ 1287479549201 lw=Window{44f07f70 com.android.launcher/com.android.launcher.Launcher paused=false} lb=android.os.BinderProxy@44d82658 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false}}}
10-19 17:13:42.110: WARN/WindowManager(1290): Current state: {{null to Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false} @ 1287479622112 lw=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false} lb=android.os.BinderProxy@450cb098 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false}}}
10-19 17:13:42.110: WARN/WindowManager(1290): Continuing to wait for key to be dispatched
10-19 17:13:47.114: WARN/WindowManager(1290): Key dispatching timed out sending to com.sfapi/com.sfapi.SFActivity
10-19 17:13:47.114: WARN/WindowManager(1290): Dispatch state: {{KeyEvent{action=1 code=4 repeat=0 meta=0 scancode=158 mFlags=72} to Window{44f07f70 com.android.launcher/com.android.launcher.Launcher paused=false} @ 1287479549201 lw=Window{44f07f70 com.android.launcher/com.android.launcher.Launcher paused=false} lb=android.os.BinderProxy@44d82658 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false}}}
10-19 17:13:47.114: WARN/WindowManager(1290): Current state: {{null to Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false} @ 1287479627116 lw=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false} lb=android.os.BinderProxy@450cb098 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false}}}
10-19 17:13:47.114: WARN/WindowManager(1290): Continuing to wait for key to be dispatched
10-19 17:13:52.118: WARN/WindowManager(1290): Key dispatching timed out sending to com.sfapi/com.sfapi.SFActivity
10-19 17:13:52.118: WARN/WindowManager(1290): Dispatch state: {{KeyEvent{action=1 code=4 repeat=0 meta=0 scancode=158 mFlags=72} to Window{44f07f70 com.android.launcher/com.android.launcher.Launcher paused=false} @ 1287479549201 lw=Window{44f07f70 com.android.launcher/com.android.launcher.Launcher paused=false} lb=android.os.BinderProxy@44d82658 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false}}}
10-19 17:13:52.118: WARN/WindowManager(1290): Current state: {{null to Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false} @ 1287479632120 lw=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false} lb=android.os.BinderProxy@450cb098 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false}}}
10-19 17:13:52.118: WARN/WindowManager(1290): Continuing to wait for key to be dispatched
10-19 17:13:57.122: WARN/WindowManager(1290): Key dispatching timed out sending to com.sfapi/com.sfapi.SFActivity
10-19 17:13:57.122: WARN/WindowManager(1290): Dispatch state: {{KeyEvent{action=1 code=4 repeat=0 meta=0 scancode=158 mFlags=72} to Window{44f07f70 com.android.launcher/com.android.launcher.Launcher paused=false} @ 1287479549201 lw=Window{44f07f70 com.android.launcher/com.android.launcher.Launcher paused=false} lb=android.os.BinderProxy@44d82658 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false}}}
10-19 17:13:57.122: WARN/WindowManager(1290): Current state: {{null to Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false} @ 1287479637123 lw=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false} lb=android.os.BinderProxy@450cb098 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44e30ab8 com.sfapi/com.sfapi.SFActivity paused=false}}}
10-19 17:13:57.122: WARN/WindowManager(1290): Continuing to wait for key to be dispatched
梦_枫 2010-10-19
  • 打赏
  • 举报
回复
帮顶吧,c写的代码越来越看不懂了,,,,
我想是代码中某些对象没有及时释放,多次点击导致内存溢出了吧。。
下载代码方式:https://pan.quark.cn/s/dd3561eca308 在软件开发领域,面向对象编程(OOP)是一种普遍采纳的结构化方法,它使得开发者能够借助模拟现实环境中的实体和关系来构建软件系统。在本案例中,我们观察到的是一个关于借助抽象类来执行不同几何图形面积求解的实践应用。现在,让我们详细分析这一议题。 标题 "应用抽象类计算面积" 清晰地表明我们将要讨论一个抽象类,此类设定了一个用于测量图形面积的标准函数,但并未提供实际的执行过程。抽象类在诸如C#或Java等编程语言中通常借助`abstract`修饰符进行声明,它们无法直接创建对象实例,仅能作为其他类的基础模板。 描述部分提及的"图形界面应用"暗示这是一个基于视觉用户界面(GUI)的系统,可能运用了.NET Framework的Windows Forms或WPF技术,或者是Java平台的Swing或JavaFX框架。在这样环境下,用户能够通过视觉元素与这些几何体进行互动,例如输入相关尺寸并观看到计算得出的面积值。 抽象类“几何体”内嵌了“计算面积”这一抽象函数。在代码层面,这可以被表述为: ```csharp public abstract class GeometricShape { public abstract double CalculateArea(); } ``` 随后,有三个派生类:圆(Circle)、矩形(Rectangle)和三角形(Triangle),它们各自提供了这个抽象函数的具体实现。比如,圆的面积是通过π乘以半径的平方得到的,矩形的面积是长和宽的乘积,而三角形的面积可能是底乘以高再除以2的结果。这些类将提供具体实现来计算它们各自的面积: ```csharp p...
内容概要:本文系统研究了移相控制全桥LLC谐振变换器的工作特性,深入分析其在不同工作模式下的运行机理与性能表现,重点探讨了软开关实现、高效率能量转换及宽范围电压调节等关键技术优势。通过Simulink搭建精确的仿真模型,对谐振腔参数、开关频率、电压增益、系统效率等关键指标进行仿真分析,验证了理论设计的正确性。同时,详细研究了移相控制策略对系统动态响应、稳定性和轻载/重载工况适应性的影响,揭示了控制参数与电路参数之间的耦合关系,为高频高效电源设计提供了理论依据和实践指导。; 适合人群:具备电力电子技术、模拟电路及自动控制理论基础,从事开关电源、新能源变换器、电动汽车充电模块或高频电源系统研发的工程师及高校研究生。; 使用场景及目标:①掌握全桥LLC谐振变换器的拓扑结构、工作原理与关键参数设计方法;②理解移相控制在实现零电压开通(ZVS)和零电流关断(ZCS)中的作用机制;③通过Simulink仿真掌握变换器建模、参数优化与性能评估流程,服务于实际产品开发与学术课题研究。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步操作,重点关注谐振网络(Lr, Lm, Cr)参数与移相角之间的匹配设计,深入理解软开关条件的形成过程,并通过调整负载和输入电压进行多工况仿真,以全面掌握系统动态特性。

80,488

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧