Я запускаю услугу из кнопки активности, которая запускает класс обслуживания и запускает Broadcastreceiver, и он запускается в фоновом режиме, но я хочу отменить регистрацию с помощью нажатия кнопки с того же класса activity.it, похоже, не работает. добавлен класс приемников к манифесту. Вот мой код.Как отменить регистрацию из-за активности
кнопка активность нажмите для registerreceiver
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent svc = new Intent(this, DemoService.class);
startService(svc);
});
DemoService.class
public class DemoService extends Service {
static final String LOGGING_TAG = "MyDemo";
private static Alarm1 tickReceiver =new Alarm1();
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onStart(Intent intent, int startId){
super.onStart(intent, startId);
Log.v(LOGGING_TAG, "DemoService.onStart()");
}
@Override
public void onCreate(){
super.onCreate();
Log.d(LOGGING_TAG, "DemoService.onCreate()");
registerReceiver(
new Alarm1(),
new IntentFilter(Intent.ACTION_TIME_TICK));
}
}
кнопка активность нажмите для unregisterReceiver
unreg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DemoService demo=new DemoService();
demo.unreg();
});
И класс приемника
public class Alarm1 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("tag","working");
}
Как я могу отменить регистрацию с помощью кнопки отмены. Если я нажму кнопку Unreg, то покажите мне ошибку java.lang.IllegalArgumentException: Получатель не зарегистрирован:
если это локально целью вы должен использовать LocalBroadcastReceiver. Вы видели это: http://stackoverflow.com/questions/8241128/dynamically-register-unregister-a-broadcast-receiver-in-android Это может помочь вам –
мое приложение будет работать в background.so я не могу использовать метод onpause для отмены регистрации. @ KrzysztofTurek – shakac
Можете ли вы показать мне свой метод unreg() в DemoService? Я вижу, что у вас есть ссылка tickerReceiver, но в методе onCreate вы создаете новый 'registerReceiver ( новый Alarm1(), новый IntentFilter (Intent.ACTION_TIME_TICK)); –