2013-12-13 3 views
0

Я использую службу для запуска моего сервера, но когда я вызываю stopervice(). Он ничего не делает, просто перезапускает службу. Любая помощь будет appriciated.and, пожалуйста, сообщите мне, как удалить уведомление об услуге, когда служба прекращается. это мой код услуги:Мой сервис не останавливается

{Новый код}

public class ServerService extends Service { 
    private boolean isRunning = false; 
    String port; 


    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
      port = "10000"; 

     run(port); 

     return (START_NOT_STICKY); 
    } 

    @Override 
    public void onDestroy() { 
     if (isRunning) { 

      isRunning = false; 
      stopForeground(true); 
     } } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return (null); 
    } 

    @SuppressWarnings("deprecation") 
    private void run(String port) { 
     if (!isRunning) { 

      isRunning = true; 

      Notification note = new Notification(R.drawable.ic_launcher, 
        "Server is successfully running", 
        System.currentTimeMillis()); 
      Intent i = new Intent(Intent.ACTION_VIEW, 
        Uri.parse("http://localhost:" + port)); 


      PendingIntent pi = PendingIntent.getActivity(this, 0, i, 0); 

      note.setLatestEventInfo(this, "Ws Server", "Open http://localhost:" 
        + port, pi); 

      startForeground(1337,note); 
     } 
    } 



     } 
+0

где вы звоните метод destory для остановки службы в вашем коде. – Nambi

+0

'm.stopService();' !! ?? : -/ –

ответ

0

, если вы не хотите его перезапустить,

return START_NOT_STICKY; 

наконец

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
     port = "10000"; 
    if(null != intent) { 
     String action = intent.getAction(); 
     if(null != action && action.equals(STOPFOREGROUND)) { 
      stopForeground(true); 
     } 
    } 
    run(port); 

    return (START_NOT_STICKY); 
} 

Intent m = new Intent (MainActivity.this,ServerService.class); 
m.setAction(STOPFOREGROUND); 
MainActivity.this.stopService(m); 
Intent m1 = new Intent (MainActivity.this,ServerService.class); 
MainActivity.this.stopService(m1); 
+0

first stopForeground (true), прежде чем вы вызове stopervice(), что вы понимаете под этим – user3098412

+0

Я обновил свой код – venciallee

+0

Мне нужно что-нибудь сделать в службе – user3098412

1

Если вы хотите остановите Service в классе Service, затем позвоните по номеру

stopSelf() в классе обслуживания

или если вы хотите, чтобы остановить его от других Activity или изменения класса это две линии, как это ..

Intent m = new Intent (MainActivity.this,ServerService.class); 
m.stopService(); 

в

Intent m = new Intent (MainActivity.this,ServerService.class); 
context.stopService(m); 
+0

его не работает. позвольте мне изменить код – user3098412

+0

Я обновил код. – user3098412

Смежные вопросы