2012-05-05 60 views
3

與我的C語言沒有任何經驗的前提下,我想解決不允許我與我的應用程序的發佈進行的一個問題。的Android的AsyncTask與本地代碼

我有一個使用ffmeg進行文件的轉換,這是我用的AsyncTask於Android調用本機的功能。

我需要停止本機功能,以及在幾個方面嘗試:

1)我創建了C中的函數「deleteRutine」復位所有的變量。 (不工作)

2)我加入到轉換布爾變量的函數,我通過它的方法設置爲false在Android(不工作)

還有什麼我能試試嗎? 有什麼建議嗎?

+0

解決方案2的工作原理是否正確。 –

回答

2

正如rui.araujo提到的,如果實施得當第二種方法應該工作。

您是從Android的傳遞到本地函數的布爾值,打印並檢查它是否得到正確或者不通過。大多數情況下,您的JNI方法實現可能存在問題,因爲您的代碼標誌未被修改。

你的代碼應該是這樣的:

while(FLAG==true) 
{ 
    //Do Your task 
} 
return; 

如果實施得當,無疑可以正常工作。我已經在許多類似的情況下使用這種..如果仍然有一些問題,編輯您的帖子和張貼的第二次執行的代碼片段...

0

如果您使用的是交叉編譯的二進制文件的ffmpeg然後本地方法應在轉換完成後立即返回。如果需要,停止它的最好方法是使用:http://developer.android.com/reference/android/os/Process.html發送一個退出信號,因爲它會正確地完成/關閉正在轉換的文件。