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();         
  }
}

それは正しいプロセスですか?この問題を解決するために任意のサービスを使用できますか? はいの場合、アクティビティとサービス間の通信を作成する方法を教えてください。

私の要件は、アプリが完全に閉じるまでバックグラウンドで連続して関数を呼び出す必要があることです。このようにする最善の方法は何ですか。

4

1 に答える 1

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

于 2012-11-10T12:42:04.660 に答える