2012-06-16 37 views
1

我正在寫一個小型的android應用程序,它在後臺執行某些操作(即服務),我希望它在每'x'分鐘的時間間隔後顯示一個烤麪包消息。我如何去做一個廣播監聽器和警報管理器。有人可以寫一個示例代碼來演示它。背景服務在android中每2分鐘顯示一次烤麪包

+0

你應該考慮顯示通知,而不是麪包。 –

+0

我可以告訴你如何實現這一目標。 首先在啓動監聽器上啓動後臺類執行並在10分鐘後設置鬧鐘。 實現報警廣播監聽器,在那裏把你的通知邏輯,並在課堂結束時再次設置報警。 多數民衆贊成它 – rajpara

+0

你有這個原因的任何示例代碼我試圖做類似的事情。謝謝! – ghostrider

回答

0

您可以在Service類中使用TimerTimerTask輕鬆完成此操作。

1.在你Service類,首先創建從TimerTask延伸到顯示Toast消息的內部類DisplayToastTimerTask。你必須使用HandlerRunnable顯示ToastTimerTask

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> 

希望這將有助於〜