2013-07-28 83 views
1

這是我的接收器在我menifest文件中註冊安卓網絡改變廣播接收器和獲取網絡類型

 <receiver android:name=".Network_change" > 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
    </intent-filter> 
    </receiver> 
現在

什麼,我要做的是每當網絡類型,如GSM切換到UMTS或EDGE到UMTS等我想這種類型的東西我已經做了我是節省網絡類型時,我的應用程序在做我的工作後previous_network_type變量和接收器

current_network_type=telephony.getNetworkType(); 

開始

 previous_network_type=current_network_type; 

並且這些變量在服務中是靜態的,並且該服務正在運行,所以問題是M在這兩個變量中的某個時間變爲0,這是不正確的幫助?因爲0是未知的

回答

1

對於你所說的我明白你沒有考慮到每次接收器被觸發時它會創建一個新的實例,在它的工作後被銷燬。即使使用靜態變量,您也沒有持久性值。

爲我工作的一個解決方案是使用SharedPreferences。要知道,在API11 +你應該使用標誌MODE_MULTI_PROCESS,這樣的事情:

if (Build.VERSION.SDK_INT>=11) 
    mySettings=context.getSharedPreferences("MyPrefs",Context.MODE_MULTI_PROCESS); 
else 
    mySettings=context.getSharedPreferences("MyPrefs",0); 
int netType = mySettings.getBoolean("netType",0); 

希望它可以幫助...