无法在Android中使用AlarmManager停止服务

时间:2015-03-16 11:11:20

标签: 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);

    }

}

这是我的启动服务和停止服务的代码,当应用程序与互联网连接时能够启动服务,当互联网关闭时停止但是10秒后服务再次启动请检查我的问题我做错了我已经使用过警报马槽请检查请告诉我哪里出错了。

1 个答案:

答案 0 :(得分:2)

  

您需要取消闹钟以停止服务

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

希望它有助于ツ