2013-01-04 35 views
3

我在使用sqllite 3.7.4這將 執行以下開發的是Android平板電腦應用程序的過程:Howto:如何提供通知Android應用每當SQLite表更新

  1. 從UI

  2. 獲取信息
  3. ,執行某些邏輯和存儲相關的信息,以SQLite數據庫

  4. 所存儲的信息必須立即或在時間表 時間間隔發送(恩。 5:00在XYZ日)在網絡上

目前,我們已經制定了dispacher機制(線程),它不斷地輪詢新信息的數據庫在數據庫中插入。線程獲取信息併發送到網絡模塊。

但是,我覺得這不是正確的做法 每次輪詢都是開銷。可以有時間的時候沒有什麼執行 它不是實時的,因爲我們每5秒

後輪詢所以

有沒有辦法來觸發,一旦信息被髮送到我的網絡模塊在數據庫中更新?

或者有更好的方法來實現這個任務嗎?

在此先感謝。

+0

例如 http://stackoverflow.com/a/13292544/1858599 –

+0

可能是這個話題更貼近問的問題是:http:/ /stackoverflow.com/questions/8783963/android-sqlite-db-notifications –

回答

-1

希望如此,這將幫助你

private Handler h; 
    // in create time 
     h = new Handler(); 


// call where you want 
h.postDelayed(myRunnable2, 1000); // after 1000 millisecond this function call automatically 

// this function 
private Runnable myRunnable2 = new Runnable() { 
     public void run() { 
           // do some thing 

       h.postDelayed(myRunnable2, 1000); 

     } 
    }; 
+0

我的查詢是否有辦法發送一個觸發器到我的網絡模塊一旦信息在數據庫中更新? – RDX

+0

你寫的代替做某件事。此函數在每1000毫秒或您想要的時間後調用。 –

+0

答案與問題的關係如何?不是關於數據庫觸發器嗎? –

0

您可以創建自己的數據發送到網絡數據庫監聽器,每當有東西更新到數據庫時,它將獲取信息併發送到網絡。我認爲將會明確實施這件事的一些想法。

+0

怎麼樣?你能分享一些片段嗎? – RDX

2

這個問題是大約一年前,但我認爲這是一個普遍的問題。這是我如何處理數據庫更改:

在我的適配器(SQL適配器)我有方法更新/刪除或插入數據到數據庫顯然。像這樣的方法:

public long addProduct(String code, String name ... String gid, String gdate) { 

    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_CODE, code); 
    initialValues.put(KEY_NAME, name); 
    ... 
    initialValues.put(KEY_CHECK, this.checkfalse); 
    initialValues.put(KEY_GID, gid); 

--------- 
    Intent i = new Intent("data_inserted"); 
    i.putExtra("date", date); 

    sendBroadcast(i); 
--------- 

    return mDb.insert(SQLITE_TABLE, null, initialValues); 
} 

本次變動後發生,它將發送一個廣播意圖。要取得這第一註冊您的廣播接收器在您的onCreate方法(uploaderClass或其他)。這將是這樣的:

registerReceiver(Updated, new IntentFilter("data_inserted")); 

而且這種方法來處理以下操作!

private final BroadcastReceiver Updated= new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     doSomething(); // Data was inserted upload it 
    } 
}; 

編輯:

從數據庫中獲取唯一的新項目,我籤新產品。我有一個可以包含「上傳」,「更新」或「刪除」字符串的「信息」柱。然後我從數據庫中獲取包含這些特殊字符串的所有項目並上傳它們。之後,我將它們設置爲空或空字符串。無論你想要什麼。希望我解釋它沒有複雜的:)自己的數據庫監聽器的