Autore Topic: Crash in ThreadPoolExecutor....  (Letto 358 volte)

Offline Rino63

  • Utente normale
  • ***
  • Post: 167
  • Respect: +3
    • Mostra profilo
Crash in ThreadPoolExecutor....
« il: 28 Maggio 2014, 12:48:34 CEST »
0
sto cercando di aggiungere un service in background ad una mia app. sia l'app che il service quando eseguiti da soli funzionano, il problema quindi è di integrarli e farli eseguire in thread diversi (il service effettua delle operazioni di rete). per fare questo ho seguito la seguente strategia:

1) ho creato una classe MioAsyncTask
Codice (Java): [Seleziona]
import android.content.Intent;
import android.os.AsyncTask;
import android.content.Context;

public class MioAyncTask extends AsyncTask<Void, Void, Void> {
        private Context context;

        @Override
        protected Void doInBackground(Void... params) {
                // TODO Auto-generated method stub
                Intent serviceIntent = new Intent();
                serviceIntent.setAction("miaApp.Receiver");
        context.startService(serviceIntent);
                return null;
        }

}

Il mio BootReceiver(Il servizio dovrebbe avviarsi all'avvio di android....)
Codice (Java): [Seleziona]
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
 
public class BootReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
                Intent serviceIntent = new Intent();
                serviceIntent.setAction("miaApp.MainActivity");
                context.startService(serviceIntent);
        }
}

e la parte iniziale della mainActivity....
Codice (Java): [Seleziona]
La mainActivity (parte iniziale)

        private MioAyncTask Mtask;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                Mtask = new MioAyncTask();
                Mtask.execute();

All'avvio si apre la schermata principale dell'app ma poi si blocca in ThreadPoolExecutor nel punto:

 
Codice (Java): [Seleziona]
 final void runWorker(Worker w) {
        Thread wt = Thread.currentThread();
        Runnable task = w.firstTask;
        w.firstTask = null;
        w.unlock(); // allow interrupts

qualcuno saprebbe spiegarmi perchè?