2013-07-28 67 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); 

希望它可以帮助...