2016-07-07 15 views
0

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

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

Ich habe am Ende eine SharedPreferences verwendet. Ich dachte nur, dass der direkte Zugriff schneller wäre. – user1118764

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); 
    } 
} 
Verwandte Themen