0

(ハンドラー)を使用してx秒ごとにpostAtTimeで連続ループを作成するメソッドがありました。ただし、このメソッドはアクティビティBに移動し、Aに戻ってfinsihループの停止ボタンを押すと、アクティビティAに配置されます。mHandler.removeCallbacks (..)ここにメソッドを付けてやめられない

ボタンスタート:

mHandler.postAtTime(mUpdateTimeTask, 100);

ループ:

private  Runnable mUpdateTimeTask = new Runnable() {
     public void run() {
          Toast.makeText(getBaseContext(),"ok!",Toast.LENGTH_SHORT).show();
          mHandler.postDelayed(this, 1000);
      }
   };

ボタン停止:

mHandler.removeCallbacks(mUpdateTimeTask);
4

2 に答える 2

0
// In your handler
SharedPreferences sp = context.getPreferences();
boolean loop = sp.getBoolean("should_loop_ad_infinatium", false);
if (loop) {
    Toast.makeText(context, "ok", Toast.LENGTH_SHORT).show();
    mHandler.postDelayed(this, 1000);
}

別の活動から

SharedPreferences sp = context.getPreferences();
Editor e = sp.edit();
e.putBoolean("should_loop_ad_infinatium", false);
e.commit();
于 2012-08-22T22:55:05.173 に答える
0

それを作成したアクティビティから停止しようとしている場合、これは機能するはずです。そうでない場合は、他の何かが間違っています。

mHandlerをどこに割り当てますか?onResumeにある場合は、別のHandlerインスタンスからコールバックを削除しようとしています。

アクティビティBからアクティビティAの同じインスタンスに戻りますか、それとも新しいインスタンスに戻りますか?

于 2012-08-22T23:28:55.610 に答える