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 になることです。これは間違っていますか? coz 0は不明です

4

1 に答える 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 に答える