0

ハンドラー内で 2 秒ごとにループして、sharedpreference フラグ isHomeActive を使用してホーム ボタンの押下をシミュレートしようとしています。サービス内でフラグがアクティブかどうかを 2 秒ごとにチェックしようとします。値が no の場合、アプリケーションを再起動しようとしますが、yes の場合、アプリケーションは再起動されません。これまでループを機能させることができません

メイン アクティビティの onResume および onPause:

  @Override
  public void onPause()
  {
      super.onPause();
      SharedPreferences home = PreferenceManager.getDefaultSharedPreferences(PhysicalTheftDialog.this);
      Editor edit=home.edit();
      edit.putString("isHomeActive", "no");
      edit.commit();      

  }

  @Override
  public void onResume()
  {
      super.onResume();
      SharedPreferences home = PreferenceManager.getDefaultSharedPreferences(PhysicalTheftDialog.this);
      Editor edit=home.edit();
      edit.putString("isHomeActive", "yes");
      edit.commit();      
  }

サービス クラス内のループ:

        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(PhysicalTheftService.this);
    final String isHomeActive = sp.getString("isHomeActive", "");


    Runnable myRunnable = new Runnable() {
        public void run() {
             while (isHomeActive.equals("no")) {
                  try {
                          Intent physicaldialog = new Intent(PhysicalTheftService.this, PhysicalTheftDialog.class);
                          physicaldialog.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                          PhysicalTheftService.this.startActivity(physicaldialog);
                      Thread.sleep(2000);

                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } 

             }
        }
   };
4

1 に答える 1

0

一度だけ入力するだけisHomeActiveなので、値が変わることはありません。ループ内に入力する必要があります。

于 2012-08-07T17:09:17.340 に答える