1
我正在寫一個小型的android應用程序,它在後臺執行某些操作(即服務),我希望它在每'x'分鐘的時間間隔後顯示一個烤麪包消息。我如何去做一個廣播監聽器和警報管理器。有人可以寫一個示例代碼來演示它。背景服務在android中每2分鐘顯示一次烤麪包
我正在寫一個小型的android應用程序,它在後臺執行某些操作(即服務),我希望它在每'x'分鐘的時間間隔後顯示一個烤麪包消息。我如何去做一個廣播監聽器和警報管理器。有人可以寫一個示例代碼來演示它。背景服務在android中每2分鐘顯示一次烤麪包
您可以在Service
類中使用Timer
和TimerTask
輕鬆完成此操作。
1.在你Service
類,首先創建從TimerTask
延伸到顯示Toast
消息的內部類DisplayToastTimerTask
。你必須使用Handler
與Runnable
顯示Toast
從TimerTask
:
private class DisplayToastTimerTask extends TimerTask {
Handler mHandler = new Handler();
@Override
public void run() {
// Do something....
mHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Hello world", Toast.LENGTH_SHORT).show();
}
});
}
}
2.使用Timer
安排DisplayToastTimerTask
爲重複執行與2 min
private static final int TIMER_INTERVAL = 120000; // 2 Minute
private static final int TIMER_DELAY = 0;
// Create new Timer
Timer mTimer = new Timer();
mTimer.scheduleAtFixedRate(new DisplayToastTimerTask(), TIMER_DELAY, TIMER_INTERVAL);
實例中的間隔:
#。這裏是全工作Service
類:**
//MyService.java
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.widget.Toast;
import java.util.Timer;
import java.util.TimerTask;
public class MyService extends Service {
private Timer mTimer;
private Handler mHandler = new Handler();
private static final int TIMER_INTERVAL = 120000; // 2 Minute
private static final int TIMER_DELAY = 0;
@Override
public void onCreate() {
super.onCreate();
if (mTimer != null)
mTimer = null;
// Create new Timer
mTimer = new Timer();
// Required to Schedule DisplayToastTimerTask for repeated execution with an interval of `2 min`
mTimer.scheduleAtFixedRate(new DisplayToastTimerTask(), TIMER_DELAY, TIMER_INTERVAL);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return Service.START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
// Cancel timer
mTimer.cancel();
}
// Required to do some task
// Here I just display a toast message "Hello world"
private class DisplayToastTimerTask extends TimerTask {
@Override
public void run() {
// Do something....
mHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Hello world", Toast.LENGTH_SHORT).show();
}
});
}
}
}
#。你可以開始你service
象下面這樣:
Intent intentMyService = new Intent(context, MyService.class);
mContext.startService(intentMyService);
#。不要忘了申報MyService
類爲AndroidManifest.xml
:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<service android:name=".MyService" />
</application>
</manifest>
希望這將有助於〜
你應該考慮顯示通知,而不是麪包。 –
我可以告訴你如何實現這一目標。 首先在啓動監聽器上啓動後臺類執行並在10分鐘後設置鬧鐘。 實現報警廣播監聽器,在那裏把你的通知邏輯,並在課堂結束時再次設置報警。 多數民衆贊成它 – rajpara
你有這個原因的任何示例代碼我試圖做類似的事情。謝謝! – ghostrider