以下是我启动服务的代码:
我正在我的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(),但它对我来说也没用。
请建议我该如何解决这个问题?
答案 0 :(得分:0)
您必须从其他活动中致电stopService()
。或者,当所需的工作完成时,您可以在服务中调用stopSelf()
(而不是onDestroy()
)。
答案 1 :(得分:0)
尝试使用此代码可能会对您有所帮助。
stopService(new Intent(MainActivity.this,BackgroundService.class));
答案 2 :(得分:0)
我可以看到你的stopservice()正常工作以停止服务但是匿名类或者你在pendingCount()中使用的东西仍在工作,即使服务被销毁了。 所以做这样的事情
在ondestroy()中升起一个标记并在 pendingCount()循环部分中检查此内容,如果此标志为高,则还会破坏此任务。要获得更准确的答案,请添加完整的pendingCount() 代码
答案 3 :(得分:0)
您可以查看我之前发布的answer并尝试实现该功能。希望它适合你。