Ich habe eine Aktivität, die einen Dienst startet. Ich möchte, dass der Dienst Zugriff auf 1 der Mitgliedsvariablen der Aktivität hat (ein boolescher Wert). Ich habe eine getBoolean() -Methode in der Aktivität implementiert, aber wie instanziere ich die Aktivität im Dienst, auf die sie zugreifen soll?Dienst und Aktivität Zugriff auf freigegebene Daten
0
A
Antwort
0
Verwenden SharedPreferences Daten in Aktivität zu speichern und yu kann es in Dienst zugreifen in OnStartCommand Methode, wenn Sie einen Dienst starten
SharedPreferences sharedPref = getSharedPreferences ("MyPref ", Kontext.MODE_PRIVIEREN); sharedPref.getBoolean ("Flag", false);
0
Sie nicht. Verwenden Sie stattdessen einen Broadcast-Empfänger oder freigegebene Einstellungen.
Beispiel unter Verwendung von Rundfunkempfängern -
public class MyService extends Service {
boolean mActivityBoolean;
BooleanReceiver mReceiver;
@Override
public void onCreate() {
super.onCreate();
mReceiver = new BooleanReceiver();
LocalBroadcastManager.getInstance(this).registerReceiver(
mReceiver, new IntentFilter("activityBooleanIntent")
);
}
@Override
public void onDestroy() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
super.onDestroy();
}
public class BooleanReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
mActivityBoolean = intent.getBooleanExtra("activityBoolean", false);
}
}
}
public class MyActivity extends Activity {
void someMethodThatSendsABooloean(boolean trueOrFalse) {
.....
Intent intent = new Intent();
intent.setAction("activityBooleanIntent");
intent.putExtra("activityBoolean", trueOrFalse);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}
}
Ich habe am Ende eine SharedPreferences verwendet. Ich dachte nur, dass der direkte Zugriff schneller wäre. – user1118764