无法停止服务?

时间:2013-08-31 10:26:22

标签: android

以下是我启动服务的代码:

我正在我的Activity的onCreate()中开始我的服务。

  Intent svc=new Intent(BeapSoundActivity.this, BackgroundService.class);
               pendingIntent = PendingIntent.getService(BeapSoundActivity.this, 0, svc, 0);

               AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

               Calendar calendar = Calendar.getInstance();
               calendar.setTimeInMillis(System.currentTimeMillis());
               calendar.add(Calendar.SECOND, 2);
               alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10*1000, pendingIntent);

我无法通过致电

停止服务

stopService();

这是我的服务类:

public class BackgroundService extends Service{

//   private static final String TAG = null;
//   MediaPlayer player;
     MediaPlayer mMediaPlayer;
     String  strResponse;
     int i=0;

     static {

//         StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

           StrictMode.setThreadPolicy( new StrictMode.ThreadPolicy.Builder().permitAll().build());
       }
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mMediaPlayer = new MediaPlayer();
        Log.e("Oncreate","oncreate");


    }
    public int onStartCommand(Intent intent, int flags, int startId) {
//        player.start();
        Log.e("Onstartcommand","onstartcommand");

            pendingCount();

        return 1;
    }

    public void onStart(Intent intent, int startId) {
        // TO DO
//      super.onStart(intent,startId);



        Log.e("Onstart","onstart");
//      pendingCount();
    }
    public IBinder onUnBind(Intent arg0) {
        // TO DO Auto-generated method
        return null;
    }

    public void onStop() {

     this.stopSelf();


    }
    public void onPause() {

    }
    @Override
    public void onDestroy() {

         super.onDestroy();

            this.stopSelf();

//        player.stop();
//        player.release();
    }

    @Override
    public void onLowMemory() {

    }


}

    public void pendingCount(){

            my operations during the service

                 }


    }


}

我也在我的onDestroy()中尝试过stopSelf(),但它对我来说也没用。

请建议我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

您必须从其他活动中致电stopService()。或者,当所需的工作完成时,您可以在服务中调用stopSelf()(而不是onDestroy())。

答案 1 :(得分:0)

尝试使用此代码可能会对您有所帮助。

stopService(new Intent(MainActivity.this,BackgroundService.class));

答案 2 :(得分:0)

我可以看到你的stopservice()正常工作以停止服务但是匿名类或者你在pendingCount()中使用的东西仍在工作,即使服务被销毁了。 所以做这样的事情

在ondestroy()中升起一个标记并在 pendingCount()循环部分中检查此内容,如果此标志为高,则还会破坏此任务。要获得更准确的答案,请添加完整的pendingCount() 代码

答案 3 :(得分:0)

您可以查看我之前发布的answer并尝试实现该功能。希望它适合你。