neosephiroth86
28-09-2009, 11:29
Salve!Mi sono da poco avvicinato al mondo dello sviluppo su piattaforma android,mi interesserebbe sviluppare un'applicazione(lo faccio per via di un progetto universitario) che abbia come oggetto il multithreading in android.
Queste sono alcune domande che mi sono sorte e a cui non riesco a darmi esaurienti risposte:
1)Ho installato eclipse e tutti gli add-on per far girare software android;per testare il codice da me scritto uso la avd messa a disposizione del pacchetto software.
Siccome vorrei lavorare sui thread non ho ben capito a livello di astrazione software la avd di che tipo di processore sia dotato,ad esempio volendo eseguire pił thread contemporaneamente quanti di questi verrebbero effettivamente eseguiti contemporaneamente sulla avd?Della avd sono riuscito solo a capire come modificare la RAM ma ad esempio non riesco a capire quale sia il clock di sistema...
2)Vorrei creare una semplice applicazione che possa mostrare i benefici del multithreading,ad esempio vorrei implementare l'algoritmo del Crivello di Eratostene per trovare i primi n numeri primi.Questo semplice algoritmo verrebbe codificato in modo tale da poter sfruttare un thread of execution per ogni "tabellina"(ad esempio quella del 2 per trovare tutti i suoi multipli ) e poi segnare le rispettive caselle del grande vettore con tutti i numeri fino a n come false(numero non primo).Vorrei far eseguire piu thread contemporaneamente e, ad esempio,effetturare delle statistiche sul tempo necessario per trovare i primi n numeri primi usando 2,3 o + thread.
A quali parti della documentazione potrei affidarmi per trovare qualche classe interessante da poter sfruttare per i miei intenti?
Qui di seguito uno stralcio delle 2 classi che ho creato come concept per il mio progetto
//classe principale
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
public static int max=3;//il numero fino al quale voglio trovare i numeri primi
public static boolean[] numeri=new boolean[max];
public static int start=2;
public void onCreate(Bundle SavedInstanceState) {
super.onCreate(SavedInstanceState);//super si usa per referenziare Activity,superclasse di HelloAndroid
TextView tv = new TextView(this);
Crivello a =new Crivello();
Thread uno=new Thread(a);
uno.start();
for(int i=2;i<max;i++){
if (HelloAndroid.numeri[i]){
String string=new String("Primo");
tv.setText(string+i);
setContentView(tv);
}
}
}
}
//classe secondaria
package com.example.helloandroid;
public class Crivello implements Runnable {
public void run(){
for(int i=2;i<HelloAndroid.max;i++){
HelloAndroid.numeri[HelloAndroid.start*i]=false;
}
HelloAndroid.start++;
}
}
Premetto che il codice soprastante mi funziona perfettamente in Java liscio...
Queste sono alcune domande che mi sono sorte e a cui non riesco a darmi esaurienti risposte:
1)Ho installato eclipse e tutti gli add-on per far girare software android;per testare il codice da me scritto uso la avd messa a disposizione del pacchetto software.
Siccome vorrei lavorare sui thread non ho ben capito a livello di astrazione software la avd di che tipo di processore sia dotato,ad esempio volendo eseguire pił thread contemporaneamente quanti di questi verrebbero effettivamente eseguiti contemporaneamente sulla avd?Della avd sono riuscito solo a capire come modificare la RAM ma ad esempio non riesco a capire quale sia il clock di sistema...
2)Vorrei creare una semplice applicazione che possa mostrare i benefici del multithreading,ad esempio vorrei implementare l'algoritmo del Crivello di Eratostene per trovare i primi n numeri primi.Questo semplice algoritmo verrebbe codificato in modo tale da poter sfruttare un thread of execution per ogni "tabellina"(ad esempio quella del 2 per trovare tutti i suoi multipli ) e poi segnare le rispettive caselle del grande vettore con tutti i numeri fino a n come false(numero non primo).Vorrei far eseguire piu thread contemporaneamente e, ad esempio,effetturare delle statistiche sul tempo necessario per trovare i primi n numeri primi usando 2,3 o + thread.
A quali parti della documentazione potrei affidarmi per trovare qualche classe interessante da poter sfruttare per i miei intenti?
Qui di seguito uno stralcio delle 2 classi che ho creato come concept per il mio progetto
//classe principale
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
public static int max=3;//il numero fino al quale voglio trovare i numeri primi
public static boolean[] numeri=new boolean[max];
public static int start=2;
public void onCreate(Bundle SavedInstanceState) {
super.onCreate(SavedInstanceState);//super si usa per referenziare Activity,superclasse di HelloAndroid
TextView tv = new TextView(this);
Crivello a =new Crivello();
Thread uno=new Thread(a);
uno.start();
for(int i=2;i<max;i++){
if (HelloAndroid.numeri[i]){
String string=new String("Primo");
tv.setText(string+i);
setContentView(tv);
}
}
}
}
//classe secondaria
package com.example.helloandroid;
public class Crivello implements Runnable {
public void run(){
for(int i=2;i<HelloAndroid.max;i++){
HelloAndroid.numeri[HelloAndroid.start*i]=false;
}
HelloAndroid.start++;
}
}
Premetto che il codice soprastante mi funziona perfettamente in Java liscio...