Вот что такое мой код... и у меня возникает проблема из-за регистрации и отмены регистрации (несколько раз) моего приемника (который запускает службу).
проблема в том, что: я видел, что переменная «получатель» становится NULL после однократного выполнения команд registerReceiver и unregisterReceiver... в частности, после того, как я зарегистрирую и отменю регистрацию, а затем снова зарегистрирую получателя, получатель имеет только NULL, и, следовательно, в то время как при повторной отмене регистрации выдает ошибку! так что в основном мое приложение не может снова зарегистрировать Receiver после его отмены. Почему это проблема?
public class startScreen extends Activity {
/** Called when the activity is first created. */
private BroadcastReceiver receiver=new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.example.MyService");
context.startService(serviceIntent);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.initial);
final IntentFilter filter = new IntentFilter();
filter.addAction("android.net.wifi.STATE_CHANGE");
Button button = (Button) findViewById(R.id.button1);
final ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton1);
try
{
... some code...
if(bool == true)
{
toggleButton.setChecked(true);
this.registerReceiver(receiver, filter);
}
else
toggleButton.setChecked(false);
}catch(Exception e) {
Log.e("Error", "Database", e);
} finally {
...
}
toggleButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if((toggleButton.isChecked()))
{
getBaseContext().registerReceiver(receiver, filter);
}
else
{
if (receiver != null){
getBaseContext().unregisterReceiver(receiver);
receiver = null;
}
}
}
});
}
@Override
protected void onResume(){
super.onResume();
if(bool == true)
{
if(receiver == null)
this.registerReceiver(receiver, filter);
}
}
@Override
protected void onPause(){
super.onPause();
if (receiver != null){
this.unregisterReceiver(receiver);
receiver = null;
}
}
}