2012-11-10 116 views
1

我正在使用線程加載庫(本機代碼)必須調用一些功能從android代碼到本地代碼。它在一段時間線程終止後工作正常,所以這些函數沒有正確調用。目前我正在使用此代碼創建線程。爲什麼線程在加載所有數據之前終止?

class aThread extends Thread { 

    public static boolean finished; 

    public void run() { 

     if (a_app.initApp() != 0) {   
     return; 
     } else {   
     } 
     a_app.startPjsua(ApjsuaActivity.CFG_FNAME); 
     finished = true; 
     a_app.deinitApp();   
    } 
} 

它是正確的進程或不呢? 我可以使用任何服務來解決這個問題,如果是的話如何創建活動和服務之間的溝通。

我的要求是我必須在後臺連續調用一個函數,直到應用程序完全關閉。什麼是這樣做的最佳方式。

+1

你的意思是線程正在終止,而應用程序的其餘部分仍在運行?或者關閉應用程序的活動後?這有點不清楚。 –

+0

線程正在終止,而應用程序的其餘部分仍在運行。主要是我想運行該線程,直到應用程序在設備上運行。 –

+0

我希望有一些錯誤被記錄,你檢查了日誌嗎?你完全確定你的線程沒有完成任務,對吧? –

回答

1

你在找這樣的事嗎?

boolean ok; 
onCreate(Bundle a) 
{ 
    ... 
    ok=true; 
    new aThread().start(); 
} 

    class aThread extends Thread { 

     public static boolean finished; 

     public void run() { 
     while(ok==true) 
     { 
      if (a_app.initApp() != 0) {   
      ok=false; 
      } else { 
      a_app.startPjsua(ApjsuaActivity.CFG_FNAME); 
      finished = true; 
      a_app.deinitApp();   
      } 

      //If you want to execute after some interval.. 
      //Thread.sleep(time_in_milliseconds); 

     } 
     } 
    } 


這樣它將運行,只要ok=true。當你退出應用程序或者如果你想停止線程;設置值爲ok=false

+0

我得到這個錯誤,如果我使用上面的代碼致命的例外:線程-10 在:'if(a_app.initApp()!= 0){'線 –

+0

@RajaReddyPolamReddy:我編輯了答案。 – Ashwin

相關問題