Что я хочу сделать в своем приложении: 1. Когда пользователь откроет приложение, он сможет увидеть уже запущенный таймер обратного отсчета. Поэтому в этом случае я хочу показать номера обратного отсчета в текстовом виде, которое будет всегда обновляться каждую секунду. 2. Пользователь сможет остановить его. 3. Пользователь может покинуть приложение, но обратный отсчет должен продолжаться и показывать обновленное время, когда он возвращается к пользовательскому интерфейсу приложения.Реализация таймера обратного отсчета с использованием службы в фоновом режиме
Так что, основываясь на вышеуказанных пунктах, я понимаю, что мне нужно реализовать Службу, которая работает в фоновом режиме. Я прочитал ссылку this, но моя проблема связана с реализацией. Я совершенно не понимаю, как это реализовать. При этом я также не могу придумать способ показать время в пользовательском интерфейсе, как только пользователь вернется в приложение. Я также видел this link, но я не уверен, что только реализация CountDownTimer делает его работающей службой. Итак, как мне его продолжить и реализовать? Любые ссылки на конкретные учебники/коды приветствуются. Благодарю.
ОБНОВЛЕНИЕ: Я до сих пор был в состоянии сделать следующее: MainActivity.java
public class MainActivity extends Activity {
Button btnStart,btnStop;
Intent serviceIntent;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (Button) findViewById(R.id.btnStart);
btnStop = (Button) findViewById(R.id.btnStop);
tv = (TextView) findViewById(R.id.timeView);
//final MyCounter timer = new MyCounter(100000,1000);
//tv.setText("100");
//timer.start();
serviceIntent = new Intent(MainActivity.this,MyService.class);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startService(serviceIntent);
}
});
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopService(serviceIntent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
MyService.java:
public class MyService extends Service {
MyCounter timer;
@Override
public void onCreate() {
// TODO Auto-generated method stub
timer = new MyCounter(100000,1000);
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
timer.start();
return super.onStartCommand(intent, flags, startId);
}
private class MyCounter extends CountDownTimer{
public MyCounter(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
Toast.makeText(getApplicationContext(), "death", Toast.LENGTH_LONG).show();
stopSelf();
}
@Override
public void onTick(long millisUntilFinished) {
Toast.makeText(getApplicationContext(), (millisUntilFinished/1000)+"", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
timer.cancel();
//stopSelf();
super.onDestroy();
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
Проблема заключается в том: 1. Я не знать, как показать обратный отсчет на MainActivity UI, кроме этого Тоста. 2. Он не прекращает отсчет, когда я нажимаю кнопку «Стоп».
Я думаю, что вы можете использовать трансляцию в сообщении, это поможет вам. –
@GhalebKhaled, не могли бы вы объяснить о реализации? Я видел учебник из vogella http://www.vogella.com/articles/AndroidServices/article.html и не мог помочь себе понять, как вызываются широковещательные приемники. – Arefin
проверить http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html и http://www.edureka.in/blog/android-tutorials-broadcast-receivers/, надеясь, что это поможет вам –