0

この 2 つの方法があります。「something1*」が発生したときにこのメイン アクティビティを一時停止し、メイン アクティビティが一時停止している間に someactivity1* に変更します。しかし、私の問題は、それが私のアクティビティを変更せず、メインのアクティビティをフリーズさせ、他に何もしないことです。スレッドを破棄したためと思われますが、解決策が見られず、わかりません。(メソッド2はループ内にあります)私の英語で申し訳ありませんが、助けてくれてありがとう

    public void method1(){

      super.onPause();
      run = false;
      while(){
        try{
          thread.join();
        }catch(InterruptedException e){
          e.printStackTrace();
        }
     }

      thread1 = null;

     Intent i = new Intent(someactivity1*);
     startActivity(i);

   }

   //the method2 is inside a loop
   public void method2(){

     if(something1*){

       onPause();

     }

   }
4

3 に答える 3

0

あなたが言うthread.join()。これにより、メイン スレッド (別名 UI スレッド) は、呼び出されたスレッドthreadが終了するまで待機します。つまり、それでアプリケーションをロックしています。

とにかくアプリの一時停止を管理したいのはなぜですか? Android 自体がすべてを管理します。アクティビティを開始するだけonPause()で、メソッド内でYourActivity.onPause().

于 2012-07-31T19:41:46.943 に答える
0

onPause を呼び出すべきではありません。これは os コールバック メソッドです。

于 2012-07-31T19:41:47.037 に答える
0

アクティビティを一時停止するのはあなたではなく、OS であるため、onPause() メソッドを呼び出す必要はまったくありません。

「何か」が起こって前の活動が一時停止したときに、単純に別の活動を開始する必要があると思います。この助けを願っています。

于 2012-08-01T09:48:22.380 に答える