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;
}
...全文
1021 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写的代码越来越看不懂了,,,,
我想是代码中某些对象没有及时释放,多次点击导致内存溢出了吧。。

80,490

社区成员

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

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