你不能做的UI線程上做了大量的工作,所以使得數據庫操作,你可以選擇不同的方法,他們幾個人,我更喜歡使用下面列出;
- 創建一個線程池並通過線程執行每個數據庫操作,這減少了UI線程的負載,並且它從不初始化大量線程。
- 您可以使用服務來更新數據庫操作。因爲在UI線程上運行的服務不能在Services中編寫操作,所以必須在服務方法內部創建一個單獨的線程。或者你可以直接使用Intent服務,因爲它不能在UI線程上工作。
here是在Android的
和this線程池的開發者文檔,用於IntentService
文檔
UPDATE
這將意圖每分鐘發送給您的服務,而無需使用任何處理器時間在您的活動之間
Intent myIntent = new Intent(context, MyServiceReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 60); // first time
long frequency= 60 * 1000; // in ms
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), frequency, pendingIntent);
在此之前,檢查是否真的需要在每分鐘內啓動一項服務。或者如果您可以有一個服務在每分鐘檢查數據更改,則啓動新服務會消耗比檢查自身更多的資源。
更新2
private ping() {
// periodic action here.
scheduleNext();
}
private scheduleNext() {
mHandler.postDelayed(new Runnable() {
public void run() { ping(); }
}, 60000);
}
int onStartCommand(Intent intent, int x, int y) {
mHandler = new android.os.Handler();
ping();
return STICKY;
}
這就像,你可以做
....感謝其對我有很大的幫助一個簡單的例子...我會檢查這兩個.... 。我還有一個問題如果我使用Service,那麼我如何在每分鐘傳遞活動中的數據,因爲我正在獲取活動中的數據,然後存儲在數據庫中。 – Isha
考慮接受答案,如果你滿意 – droidev
你介意再詳述一下用例嗎? – droidev