2012-09-04 72 views
3

我想知道這段代碼是否可以工作(我現在無法嘗試,此外,我還有一些疑問必須清除)。在Android中的鬧鐘管理器中使用意圖額外值傳遞值

Intent intent = new Intent(context, AlarmReceiver.class); 
intent.putExtra("user",global.getUsername()); 
intent.puExtra("password",global.getPassword); 
PendingIntent sender = PendingIntent.getBroadcast(context, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
// Get the AlarmManager service 
Log.v("inside log_run", "new service started"); 
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
am.setRepeating(AlarmManager.RTC_WAKEUP, IMMEDIATELY,60000,sender); 
finish(); 

正如你所看到的,這個代碼開始的AlarmManagersetRepeating()。如果您看到傳遞給BroadcastReceiver的意圖(實際上是等待的意圖),則會傳遞兩個附加信息。只要應用程序正在運行,這些都是全局變量。但是,這AlarmManager意味着在後臺運行(即應用程序將只的的alrmamanager的廣播recevier第幾個電話活着)
我的問題
威爾AlarmManager使副本全局變量(用戶名和密碼)並保持此副本與意圖一起傳遞(作爲額外)?或者它會引用全局變量(在全局變量變爲空時,在進程中傳遞null作爲額外值)?因爲這些值將在廣播接收器中使用。

回答

2

我可以看到由此方法產生的問題。我要做的是將你的兩個變量存儲在SharedPrefs文件中,並直接從BroadcastReciever訪問它們。 SharedPrefs值持續存在,而Android中的「全局變量」則不存在。

+0

我想到了這個方法。但共享首選項存儲在一個xml文件中。任何人都可以看到這些文件(如果已導出)。但不是全局變量。 – Ashwin

+0

默認情況下SharedPrefs是私有的,用於引用文檔 - 「創建的文件只能由調用應用程序訪問(或共享相同用戶ID的所有應用程序)」。 –

+0

你是對的。但是我想說的是,如果我使用DDMS將手機連接到我的PC和Eclipse中,我可以將XML文件導出到我的PC上。這可以通過DB完成。應用程序數據庫可以用這種方式導出。 – Ashwin

0

在Alarm管理器上,只需將getApplicationContext作爲參數傳遞給helper構造函數即可。

相關問題