如何在android中停止后台服务?

时间:2014-05-31 19:11:40

标签: android service alarmmanager

我尝试使用AlarmManager和后台服务为SMS调度开发Android应用程序。这是代码片段:(获取用户输入后)

Bundle b=getIntent().getExtras() ;
        String s1,s2,s3,s4 ;

        s1=b.getString("time") ;
        s2=b.getString("target") ;
        s3=b.getString("text") ;
        s4=b.getString("date") ;
        t1.setText(s1) ;
        t2.setText(s2) ;
        t3.setText(s3) ;
        Calendar cal=Calendar.getInstance() ;
        Intent intent=new Intent(SecondActivity.this,SmsSrevice.class) ;
        intent.putExtra("date",s4) ;
        intent.putExtra("time",s1) ;
        intent.putExtra("num",s2) ;
        intent.putExtra("message",s3) ;
        this.startService(intent);
        PendingIntent pindent=PendingIntent.getService(SecondActivity.this,0, intent,0) ;
        AlarmManager am=(AlarmManager)getSystemService(Context.ALARM_SERVICE) ;
        am.setRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),1000,pindent) ;

这是服务代码段:

public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId) ;
        Calendar cal=Calendar.getInstance() ;
        String cdate, ctime ;
        SimpleDateFormat sf=new SimpleDateFormat("d-M-yyyy") ;
        SimpleDateFormat sd=new SimpleDateFormat("H:m") ;   
        cdate=sf.format(cal.getTime()) ;
        ctime=sd.format(cal.getTime()) ;
        Bundle b ;
        b=intent.getExtras() ;
        String m1=b.getString("date") ;
        String m2=b.getString("time") ;
        String m3=b.getString("num")  ;
        String m4=b.getString("message") ;
        if(m1.equals(cdate) && m2.equals(ctime) && f!=1)
        {   SmsManager sms=SmsManager.getDefault() ;
        sms.sendTextMessage(m3,null,m4,null,null) ;
            Toast.makeText(this,"Message sent",Toast.LENGTH_LONG).show() ;
            //super.onDestroy();
            m2="done" ;
        }
        else
            {
                q=1 ;
                //f=2 ;
            }
        return 0 ;

    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();
        ActivityManager ama=(ActivityManager)getSystemService(ACTIVITY_SERVICE) ;
      }

我无法停止服务......它一直在发送给定时间的短信。有任何想法吗?我是Android开发的新手....提前感谢...

2 个答案:

答案 0 :(得分:0)

我想你想停止在后台运行的服务 停止正在运行的后台服务

Intent svc = new Intent(MainActivity.this , BackGroundActivity.class);
stopService(svc);

此处BackGroundActivity是在后台运行的活动 MainActivity是BackGroungActivity运行的活动。
希望这会有所帮助.. !!

答案 1 :(得分:0)

stopself工作结束后,Service致电Service

sms.sendTextMessage(m3,null,m4,null,null) ;
stopself();

有关详细信息,请参阅here