Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android初級教程啟動定時器詳解

Android初級教程啟動定時器詳解

編輯:關於Android編程

本案例知識是:後台執行定時任務。

Alarm機制:

一、創建LongRunningService類

 

package com.example.servicebestpractice;

import java.util.Date;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;

public class LongRunningService extends Service {

	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		new Thread(new Runnable() {

			@Override
			public void run() {
				// 打印日志模擬耗時操作。
				System.out.println("服務啟動時間:" + new Date().toString());

			}
		}).start();

		AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
		int times = 1000 * 60;// 設置相隔多久啟動一次廣播,我設置為1分鐘啟動一次服務,去執行定時任務(雖然我寫的是打印一條日志,看起來很無趣)
		long triggerAtime = SystemClock.elapsedRealtime() + times;// 設置觸發時間點
		Intent i = new Intent(this, AlarmReceiver.class);// 服務啟動廣播的intent意圖
		PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, i, 0);// 封裝pendingIntent,啟動廣播接收者意圖
		manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtime,
				pendingIntent);// 設置精確定時時間,定時到了觸發,廣播啟動。
		return super.onStartCommand(intent, flags, startId);
	}

}

二、創建要接收上述要啟動的廣播。

 

 

package com.example.servicebestpractice;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class AlarmReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		//服務類時間到啟動廣播這行這個方法
		Intent intent2 = new Intent(context, LongRunningService.class);
		context.startService(intent2);//啟動廣播做啟動服務操作,服務又一次啟動。
		//由於服務不再前台,因此不需要設置addFlags();方法。因為服務不再借助任務棧去創建了。
	}

}

三、我們要有一個啟動服務的入口,那就選擇在主活動作為入口:

 

 

package com.example.servicebestpractice;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //主活動要首先有一次啟動服務的操作
        Intent intent3 = new Intent(this, LongRunningService.class);
        startService(intent3);//啟動服務
    }
    
}

四、廣播、活動、服務三大組件記得去清單文件配置一下:

 

 


            
                

                
            
        

        
        

        
        

寫完這篇博客後,看了一下我的log後台輸出如下截圖:

 

每隔一分鐘,定時任務完成,啟動一次服務。

 

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved