2017-01-31 2 views
1

Meine MainActivity hat eine Thread, die RSA-Schlüssel generiert und die Zeit in Millisekunden zurückgibt, die für ihre Generierung benötigt wurde.So wird der Hauptaktivitäts-Thread auf die zweite Aktivität angewendet

Während ich diese Thread ausführen, geht die App auf eine zweite Activity.

Ich brauche die zweite Activity, um diese Zeit in Millisekunden zu erhalten.

Wie ich verstehe, sobald Sie startActivity() anrufen, geht der Elternteil Activity schlafen. Wie kann ich beides gleichzeitig ausführen?

Danke!

+0

einen Rundfunkempfänger verwenden zu benachrichtigen, die selbst hört, dass die RAS-Schlüssel gibt. – AnixPasBesoin

+0

danke! Ich werde es untersuchen –

Antwort

0

Wie ich verstehe, sobald Sie activity() starten, geht die übergeordnete Aktivität in den Ruhezustand. Also wie kann ich beide gleichzeitig laufen

Sie nicht. Und das musst du nicht. Da Sie Ihre RSA-Schlüssel in einem separaten Thread generieren, sollte der Code vollständig unabhängig von Ihren Aktivitäten sein (abgesehen davon, in MainActivity gestartet zu werden). Alles, was Sie wissen müssen, ist, wann Ihre Hintergrundaufgabe beendet wurde - und dazu können Sie entweder In-App broadcasts verwenden oder Event Bus wie GreenRobot's EventBus oder RxJava verwenden.

+0

Vielen Dank! Ich werde anfangen, Sendungen zu erforschen! –

1

Sie können LocalBroadcastReceiver verwenden.

public class SecondActivity extends AppCompatActivity { 

private BroadcastReceiver mRsaReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     ArrayList<String> rsaList = intent.getStringArrayListExtra("rsaList"); 
    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity); 
    LocalBroadcastManager.getInstance(this).registerReceiver(mRsaReceiver, new IntentFilter("RSA")); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mRsaReceiver); 
} 

}

von Ihrem rsa Faden

Intent rsaIntent = new Intent("RSA"); 
rsaIntent.putExtra("rsaList", rsaArrayList); 
LocalBroadcastManager.getInstance(context).sendBroadcast(rsaIntent); 
Verwandte Themen