Autore Topic: Funzione del service richiamata all'infinito  (Letto 603 volte)

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Funzione del service richiamata all'infinito
« il: 03 Dicembre 2012, 14:03:39 CET »
0
Salve a tutti :)
Ho un problemino di un loop infinito quando vado a richiamare una funzione/metodo di un servizio..sarà che sono alle prime armi con i service...
Ho utilizzato questo pezzo di codice per attaccarmi al service dentro la mia activity
Codice (Java): [Seleziona]
private void avviaServizio() {
        //startService(new Intent(this, BluetoothChat.class));
          Intent intent = new Intent(this, BluetoothChat.class);
          bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
       }
      private void arrestaServizio() {
        //stopService(new Intent(this, BluetoothChat.class));
          if (mBound) {
              unbindService(mConnection);
              mBound = false;
          }
       }
      public void Manda(){
          servizio.Send();
      }
////////////////////////////////////////////////////////////attaccare il service all'activity
      private ServiceConnection mConnection = new ServiceConnection() {
          //////////////////
          public void onServiceConnected(ComponentName className,IBinder service) {
              // We've bound to LocalService, cast the IBinder and get LocalService instance
              LocalBinder binder = (LocalBinder) service;
              servizio = binder.getService();
              mBound = true;
          }
          /////////////
          public void onServiceDisconnected(ComponentName arg0) {
              mBound = false;
          }
      };  
///////////////////////////////////////////////////////
Il metodo Manda(); mi looppa/cicla all'infinito...che consigli mi date??
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Funzione del service richiamata all'infinito
« Risposta #1 il: 03 Dicembre 2012, 14:52:28 CET »
0
Di dirci che fa Send() nella vita...

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Funzione del service richiamata all'infinito
« Risposta #2 il: 03 Dicembre 2012, 15:01:10 CET »
0
Scusa Sakazaki spiegati meglio :)
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Funzione del service richiamata all'infinito
« Risposta #3 il: 03 Dicembre 2012, 15:04:39 CET »
0
Scusa Sakazaki spiegati meglio :)

E pure tu c'hai ragione.

Se dici che il metodo servizio.Send(); sembra andare in loop vuol dire che il problema è li dentro. Hai condiviso tutto quello attorno ma non lui, che è molto probabilmente la causa del problema :)

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Funzione del service richiamata all'infinito
« Risposta #4 il: 03 Dicembre 2012, 15:09:29 CET »
0
Adesso ti posto il resto allora :)
Questo è nel service..che è un pezzo che scrive su un inputstream e funge senza dubbio
Codice (Java): [Seleziona]
public void Send(){
        byte[] array=new byte[4];
          //int leng=28;
          array[0]=(byte)255;
          array[1]=(byte)255;
          array[2]=(byte)30;
          /////24bit
          array[3]=(byte)28;
          mChatService.write(array);
    }
Qui invece è la mia activity
Codice (Java): [Seleziona]
public class MainActivity extends Activity {
       
    public final Handler mHandler=null;
    public BluetoothChat servizio;
    public boolean mBound;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bottoneAvvia = new Button(this);
        bottoneAvvia.setText("Avvia il servizio");
        bottoneAvvia.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {
                  avviaServizio();
         }
        });
        Button bottoneArresta = new Button(this);
        bottoneArresta.setText("Arresta il servizio");
        bottoneArresta.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {
                  arrestaServizio();
         }
        });
        Button bottoneSend = new Button(this);
        bottoneSend.setText("Send");
        bottoneSend.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {
                  Manda();
         }
        });
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        layout.addView(bottoneAvvia);
        layout.addView(bottoneArresta);
        layout.addView(bottoneSend);
        setContentView(layout);
       }
      protected void onDestroy() {
         super.onDestroy();
       }
      private void avviaServizio() {
        //startService(new Intent(this, BluetoothChat.class));
          Intent intent = new Intent(this, BluetoothChat.class);
          bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
       }
      private void arrestaServizio() {
        //stopService(new Intent(this, BluetoothChat.class));
          if (mBound) {
              unbindService(mConnection);
              mBound = false;
          }
       }
      public void Manda(){
          servizio.Send();
      }
////////////////////////////////////////////////////////////attaccare il service all'activity
      private ServiceConnection mConnection = new ServiceConnection() {
          //////////////////
          public void onServiceConnected(ComponentName className,IBinder service) {
              // We've bound to LocalService, cast the IBinder and get LocalService instance
              LocalBinder binder = (LocalBinder) service;
              servizio = binder.getService();
              mBound = true;
          }
          /////////////
          public void onServiceDisconnected(ComponentName arg0) {
              mBound = false;
          }
      };  
///////////////////////////////////////////////////////
}
Secondo il mio parere sbaglio qualcosa nella logica dei service...clicco una volta e mi cicla Send() al'infinito >.<
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Funzione del service richiamata all'infinito
« Risposta #5 il: 03 Dicembre 2012, 16:54:42 CET »
0
Risolto :) grazie cmq Sakazaki
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?