Edge
Edge

Reputation: 933

unable to stop service using AlarmManger in android

public class myserveclass extends Service {

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
        return START_STICKY;
    }

    @Override
    public void onDestroy() {

        Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();

    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

}

.

public class MainActivity extends ActionBarActivity {
    CheckinternetConnection internet;
    TextView textview;
    int tempint = 100;
    private static final long REPEAT_TIME = 1000 * 5;
    private PendingIntent pendingIntent;
    Button button1;
    Button button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textview = (TextView) findViewById(R.id.textview);
        internet = new CheckinternetConnection();

        schedueService();

    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        IntentFilter filter = new IntentFilter();
        filter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(internet, filter);
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        unregisterReceiver(internet);
    }

    class CheckinternetConnection extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            if (Utils.isNetworkAvailable(MainActivity.this)) {
                textview.setVisibility(View.GONE);

                startService(new Intent(getBaseContext(), myserveclass.class));

            } else {
                textview.setVisibility(View.VISIBLE);
                textview.setText("It Seems Internet Connection is off");
                stopService(new Intent(getBaseContext(), myserveclass.class));
            }
        }
    }

    public void schedueService() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.SECOND, 10);
        Intent intent = new Intent(MainActivity.this, myserveclass.class);
        PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0,
                intent, 0);
        AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
                1000 * 10, pintent);

    }

}

this is my code for start service and stop service am able to start service when app is connected with internet and stop when internet is off but after 10 second again service becomes start please check my issue where am doing wrong i have used alarm manger please check please suggest me where am doing wrong .

Upvotes: 1

Views: 120

Answers (1)

SweetWisher ツ
SweetWisher ツ

Reputation: 7306

You need to CANCEL the alarm to stop the service

 Intent intent = new Intent(MainActivity.this, myserveclass.class);
 PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0,
                intent, 0);
 AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
 alarmManager.cancel(pintent);

Hope it helps ツ

Upvotes: 2

Related Questions