2016-11-03 24 views
0

今、私はアクティビティを持っています。タイマーを実行するアクティビティAを考えてみましょう。時間がたつとFirebaseを更新します。他のアクティビティからアクティビティのタイマーを停止する方法

timer.scedule(new TimerTask()){ 
 
@Override 
 
public void run() { 
 
\t notification(); 
 
\t Firebase areaRef = mAreaRef.child(bKey); 
 
\t areaRef.addListenerForSingleValueEvent(new com.firebase.client.ValueEventListener() { 
 
\t @Override 
 
\t \t public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) { 
 
\t \t \t checkData = dataSnapshot.child("data").getValue(Integer.class); 
 
\t \t \t Integer addData = checkData+1; 
 
\t \t } \t 
 

 
\t @Override 
 
\t \t public void onCancelled(FirebaseError firebaseError) { 
 

 
\t \t } \t 
 
\t \t });              
 
\t } 
 
},millis); 

'アクティビティB' でのボタンがあります。ボタンをクリックすると、「アクティビティA」のタイマーを停止する必要があります。

どうすればよいですか?

答えて

0

同時にアクティブにできるアクティビティは1つだけです。あなたの「活動A」は代わりにサービスによって得ることができます。そして、あなたの問題は、ボタンがクリックされたときにタイマーを停止するために、 'Activity B'直接サービスメソッドを呼び出すことによって解決されます。

0

あなたのタイマータスクは本当に多分あなたの代わりに指定されたアクティビティのタイマのServiceを使用して検討すべき、活動全体で生きている必要がある場合。

0

1に変更します。CountDownTimerに電話をかけてstart()に電話をかけ、cancel()を停止します。 CountDownTimerを停止する活動Aを通知する方法 、あなたはCountDownTimerが代わりにタイマーを使用している理由

public class MainActivity extends AppCompatActivity { 
    CountDownTimer timer = new CountDownTimer(30000, 1000) { 
     public void onTick(long millisUntilFinished) { 
      SharedPreferences sharedPreferences = getSharedPreferences("count", 0); 
      if (sharedPreferences.getBoolean("stop", false)) { 
       timer.cancel(); 
      } else { 
       Log.d("tag", millisUntilFinished/1000 + ""); 
      } 
     } 

     public void onFinish() { 

     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     timer.start(); 
     Intent intent = new Intent(this, ActivityB.class); 
     startActivity(intent); 
    } 
} 
public class ActivityB extends AppCompatActivity { 
    Button mStop; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_b); 
     mStop =(Button) findViewById(R.id.stop); 
     mStop.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       SharedPreferences sharedPreferences = getSharedPreferences("count",0); 
       SharedPreferences.Editor edit= sharedPreferences.edit(); 
       edit.putBoolean("stop", true); 
       edit.apply(); 
      } 
     }); 
    } 
} 
+0

は私が知っているかもしれ通知データに対処するため、他の方法にSharedPreferencesを変更できますか? – jwen

+0

笑、絶対にあなたはTimerを使い続けることができます、CountDownTimerは私のお気に入りです(それはちょうどandroid.osパッケージにあります)、 – shuabing

+0

ああ?私はCountDownTimerが使用されたので、1秒ごとにsharedpreferencesの 'ActivityB'をチェックすると考えました。そうでない場合、sharedpreferencesは即時アクションですか? – jwen

関連する問題