1

这是我在清单文件中注册的接收器

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

现在我要做的是每当网络类型发生变化时,例如 GSM 到 UMTS 或 EDGE 到 UMTS 等

 current_network_type=telephony.getNetworkType();

在完成我的工作之后

      previous_network_type=current_network_type;

并且这些变量在服务中是静态的,并且该服务正在运行,所以问题是 M 在某个时候在两个变量中都得到 0,这是不正确的,有什么帮助吗?因为 0 未知

4

1 回答 1

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);

希望能帮助到你...

于 2015-08-01T03:03:29.657 回答