0

这是我启动服务的代码:

我在我的 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);

我无法通过调用来停止服务

停止服务();

这是我的服务类:

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

4 回答 4

0

我可以看到您的 stopservice() 可以正常工作以停止服务,但是匿名类或您在 pendingCount() 中使用的任何内容仍然有效,即使服务被破坏.. 所以做这样的事情

在 ondestroy() 中升起一个标志并在pendingCount() 循环部分中检查这个,如果这个标志很高,也销毁这个任务。要获得更准确的答案,请添加完整的 pendingCount() 代码

于 2013-08-31T11:03:26.743 回答
0

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

stopService(new Intent(MainActivity.this,BackgroundService.class));
于 2013-08-31T10:57:41.590 回答
0

您可以查看我之前发布的答案并尝试实施。希望对你有效。

于 2013-08-31T11:05:31.233 回答
0

你必须stopService()从另一个活动中打电话。或者,您可以在所需工作完成时调用stopSelf()服务(而不是)。onDestroy()

于 2013-08-31T10:46:36.613 回答