Meine Aktivität verwendet folgende OnCreate() mit einem ausführbaren Thread mit While-Schleife. Hier ist der Code:Android Runnable Thread stecken irgendwo
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post_user_registration);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = sp.edit();
//Some Async task here
final File destFile = new File(filesDir, sp.getString(Constants.SharedPreferences.USER_ID,null)+ Constants.S3Bucket.IMAGE_EXTENSION);
final File downFile = new File(filesDir, Constants.S3Bucket.USER_DIRECTORY + sp.getString(Constants.SharedPreferences.USER_ID,null)+ Constants.S3Bucket.IMAGE_EXTENSION);
Runnable myRunnable = new Runnable() {
@Override
public void run() {
Log.v(LOG_TAG,"S3 file profile exists "+downFile.getAbsolutePath()+" "+downFile.exists());
while(!downFile.exists()){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Log.e(LOG_TAG,"Error",e);
}
Log.v(LOG_TAG,"Inside while loop");
}
Log.v(LOG_TAG,"S3 file profile exists after while "+downFile.getAbsolutePath()+" "+downFile.exists());
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish();
}
};
Thread myThread = new Thread(myRunnable);
myThread.start();
}
Der Thread überprüft im Grunde für die DownFile, die von einem AWS-Dienst erstellt wird. Meine Aktivität läuft weiter und das Steuerelement tritt nicht in die While-Schleife ein. Die Bedingung ist zum ersten Mal wahr und danach tritt die Steuerung weder in die While-Schleife ein noch beendet sie diese. Die Anweisung vor der while-Schleife wird ordnungsgemäß protokolliert. MainActivity wird also nicht gestartet.
Ist dies eine falsche Implementierung von Threading? Ich verstehe nicht, was hier passiert.
Wenn ich die App stoppe und sie erneut ausführe, ist die Bedingung jetzt falsch und daher tritt das Steuerelement nicht in die while-Schleife ein, sondern die nächste Aktivität wird ordnungsgemäß geladen.
Danke! Das hat auch funktioniert. –
Freut mich zu hören! : D –