編輯:關於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);//啟動服務 } }
每隔一分鐘,定時任務完成,啟動一次服務。
前言 這段時間在Testerhome上看了一些有關性能測試的帖子,看別人的東西,始終是別人的,只有自己寫一遍才能體會其中的細節,雖然說不要重復造輪子,但是這種基礎的東西
復制代碼 代碼如下:<FrameLayout
從ImageButton這個字面意思上來看,它是一個圖片按鈕,那麼我們就可以使用它做一個我們想要的圖片按鈕了,但是我們在實際使用的過程當中,就會發現該按鈕的使用並沒有想像
安卓開發的四大組件是Activity, service, broadcast receiver, 和content provider。作為業余的開發者,可能不需要太深入理