Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中停止后台运行服务?_Android - Fatal编程技术网

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

如何在android中停止后台运行服务?,android,Android,我正在使用上述代码在mt onCreate()中启动服务 我只想在单击按钮更改活动时停止此服务 Intent svc=new Intent(BeapSoundActivity.this, BackgroundService.class); pendingIntent = PendingIntent.getService(BeapSoundActivity.this, 0, svc, 0); AlarmManager alarmManager = (A

我正在使用上述代码在mt 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);
但这对我不起作用

这是我的背景服务课
import org.apache.http.client.ClientProtocolException;
导入org.apache.http.client.ResponseHandler;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.impl.client.BasicResponseHandler;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.json.JSONObject;
导入android.app.Service;
导入android.content.Context;
导入android.content.Intent;
导入android.media.AudioManager;
导入android.media.MediaPlayer;
导入android.media.ringtonemager;
导入android.net.Uri;
导入android.os.IBinder;
导入android.os.StrictMode;
导入android.util.Log;
公共类后台服务扩展服务{
//私有静态最终字符串标记=null;
//媒体播放器;
媒体播放器;
字符串响应;
int i=0;
静止的{
//StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(新的StrictMode.ThreadPolicy.Builder().permitAll().build());
}
@凌驾
公共IBinder onBind(意向){
//TODO自动生成的方法存根
返回null;
}
@凌驾
public void onCreate(){
super.onCreate();
mMediaPlayer=新媒体播放器();
Log.e(“Oncreate”、“Oncreate”);
}
公共int onStartCommand(Intent Intent、int标志、int startId){
//player.start();
Log.e(“Onstartcommand”、“Onstartcommand”);
pendingCount();
返回1;
}
公共无效启动(Intent Intent,int startId){
//做
//super.onStart(intent,startId);
Log.e(“Onstart”、“Onstart”);
//pendingCount();
}
公共IBinder onUnBind(意图arg0){
//做自动生成的方法
返回null;
}
公共void onStop(){
}
公共无效暂停(){
}
@凌驾
公共空间{
//player.stop();
//player.release();
}
@凌驾
public void onLowMemory(){
}
public void playSound(上下文上下文)抛出IllegalArgumentException、SecurityException、IllegalStateException、,
IOException{
Uri soundUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_通知);
//mMediaPlayer=新媒体播放器();
setDataSource(上下文,soundUri);
最终AudioManager AudioManager=(AudioManager)context.getSystemService(context.AUDIO_服务);
如果(audioManager.getStreamVolume(audioManager.STREAM_报警)!=0){
mmediplayer.setAudioStreamType(AudioManager.STREAM_报警);
mmediplayer.setLooping(true);
mmediplayer.prepare();
mmediplayer.start();
}
}
公共无效挂起计数(){
DefaultHttpClient httpClient=新的DefaultHttpClient();
HttpGet post=新的HttpGet(“http://mybusinessapp2.testshell.net/api/Orders");
post.addHeader(“用户名”info@mybusinessapp.com");
post.addHeader(“密码”,“c7d7cdf598be88a21a477842ebfa5ca5”);
ResponseHandler resHandler=new BasicResponseHandler();
字符串post_response=null;
试一试{
post\u response=httpClient.execute(post,resHandler);
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Log.e(“resp”,事后响应);
试一试{
JSONObject jobject=新的JSONObject(后响应);
strResponse=jobject.getString(“计数”);
}
捕获(例外e){
e、 printStackTrace();
}
Log.e(“tv”、“BeapSoundActivity.pending_number”);
试试{
beapsundactivity.pending_number.setText(strResponse);
//int pending=Integer.parseInt(beapsundactivity.pending_number.getText().toString());
//Log.e(“计数器”,“待处理”);
}
捕获(NullPointerException e){
e、 printStackTrace();
}
int pending=Integer.parseInt(strResponse);
如果(挂起==0){
mmediplayer.stop();
mMediaPlayer=新媒体播放器();
}
如果(挂起>0){
试一试{
playSound(BackgroundService.this);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
捕获(IllegalArgumentException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(安全异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(非法状态){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
}
请帮我解决这个问题


提前感谢

您创建了一个警报,每10秒启动一次服务。你在停止服务之前取消了吗?(如果没有,请使用(AlarmManager)getSystemService(Context.ALARM\u SERVICE).cancel)

您正在覆盖
onDestroy()
而不是调用
super.onDestroy()
。。。我会调查的
I used this line in my Button Click

    stopService(new Intent(BeapSoundActivity.this, BackgroundService.class));
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONObject;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.IBinder;
import android.os.StrictMode;
import android.util.Log;

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() {

    }
    public void onPause() {

    }
    @Override
    public void onDestroy() {
//        player.stop();
//        player.release();
    }

    @Override
    public void onLowMemory() {

    }

    public void playSound(Context context) throws IllegalArgumentException, SecurityException, IllegalStateException,
    IOException {
  Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
//   mMediaPlayer = new MediaPlayer();
  mMediaPlayer.setDataSource(context, soundUri);
  final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
  if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
    mMediaPlayer.setLooping(true);
    mMediaPlayer.prepare();
    mMediaPlayer.start();

}
}

    public void pendingCount(){
         DefaultHttpClient httpClient = new DefaultHttpClient();


           HttpGet post = new HttpGet("http://mybusinessapp2.testshell.net/api/Orders");

           post.addHeader("UserName", "info@mybusinessapp.com");
         post.addHeader("Password", "c7d7cdf598be88a21a477842ebfa5ca5");

         ResponseHandler<String> resHandler = new BasicResponseHandler();

              String post_response = null;
            try {
                post_response = httpClient.execute(post,resHandler);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
              Log.e("resp",post_response);

              try{
                    JSONObject jobject=new JSONObject(post_response);

                     strResponse= jobject.getString("Count");


              }
              catch(Exception e){
                  e.printStackTrace();
              }

              Log.e("tv",""+BeapSoundActivity. pending_number);
             try{ 
               BeapSoundActivity. pending_number.setText(strResponse);

//              int pending=Integer.parseInt(BeapSoundActivity.pending_number.getText().toString());

//               Log.e("counter",""+pending);
             }
             catch(NullPointerException e){
                 e.printStackTrace();
             }
             int pending=Integer.parseInt( strResponse);
                 if(pending==0){

                      mMediaPlayer.stop();
                      mMediaPlayer = new MediaPlayer();
                 }


                 if(pending>0){


                        try {
                            playSound(BackgroundService.this);
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (SecurityException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();



                 }
                 }


    }


}