Comment puis-je exécuter du code sur un thread d'arrière-plan sur Android?

Je veux un code de s'exécuter en arrière-plan en permanence. Je ne veux pas le faire dans un service. Est-il un autre moyen possible?

J'ai essayé d'appeler le Thread classe dans mon Activity mais mon Activity reste en arrière-plan pour un certain temps et puis il s'arrête. Le Thread classe également les arrêts de travail.

class testThread implements Runnable {
@Override
public void run() {
File file = new File( Environment.getExternalStorageDirectory(), "/BPCLTracker/gpsdata.txt" );
int i = 0;
RandomAccessFile in = null;
try {
in = new RandomAccessFile( file, "rw" );
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
//String line =null;
while ( true ) {
HttpEntity entity = null;
try {
if ( isInternetOn() ) {
while ( ( line = in.readLine() ) != null ) {
HttpClient client = new DefaultHttpClient();
String url = "some url";
HttpPost request = new HttpPost( url );
StringEntity se = new StringEntity( line );
se.setContentEncoding( "UTF-8" );
se.setContentEncoding( new BasicHeader( HTTP.CONTENT_TYPE, "application/json" ) );
entity = se;
request.setEntity( entity );
HttpResponse response = client.execute( request );
entity = response.getEntity();
i++;
}
if ( ( line = in.readLine() ) == null && entity != null ) {
file.delete();
testThread t = new testThread();
Thread t1 = new Thread( t );
t1.start();
}
} else {
Thread.sleep( 60000 );
} //end of else
} catch (NullPointerException e1) {
e1.printStackTrace();
} catch (InterruptedException e2) {
e2.printStackTrace();
} catch (IOException e1) {
//TODO Auto-generated catch block
e1.printStackTrace();
}
}//end of while
}//end of run
}
  • Salut. Pouvez-vous s'il vous plaît poster un code comme un exemple de ce que vous avez essayé? Il y a différentes façons d'exécuter du code sur un thread d'arrière-plan, mais vous devez vous rappeler si vous accédez à tous les composants de l'INTERFACE utilisateur, vous devez accéder sur le thread d'INTERFACE utilisateur à l'aide de la runOnUiThread() méthode.
  • Est-il une raison particulière pour ne pas utiliser le Service
  • ce n'est pas tellement recommandé. l'exécution continue permet de drain de batterie de l'appareil.
  • J'ai envoyer le code.
  • J'ai essayé de l'utiliser dans le service, mais son envoi le même rendu plusieurs fois.
  • Je suis d'accord il draine la batterie, mais besoin de le faire. comme je veux envoyer des données en continu.

InformationsquelleAutor user2082987 | 2013-03-18