2015-06-04 12 views
5

birden faaliyetlerine bir hizmeti bağlayıcı onresume ve benim ilk aktivitenin duraklama üzerinde kodudurBenim hizmetin doğru ilk etkinliğe binded edilir ama ikinci aktiviteye bağlamak çalıştığınızda o İşte çalışmıyor

@Override 
protected void onResume() { 
    super.onResume(); 
    connection = new ServiceConnection() { 
     @Override 
     public void onServiceDisconnected(ComponentName name) { 
      service = null; 
     } 
     @Override 
     public void onServiceConnected(ComponentName name, IBinder service) { 
      shareInfos.this.service = (IService) service; 
     } 
    }; 
    bindService(new Intent(this, shareInfos.class), connection, 
      Context.BIND_AUTO_CREATE); 
} 
@Override 
protected void onPause() { 
    super.onPause(); 
    if (service != null) { 
     service = null; 
     unbindService(connection); 
    } 
} 
benim ikinci aktiviteye aynısını yaptı ama hizmeti kullanmak çalıştığınızda o İşte hep boş benim ikinci aktivitenin kodudur:

@Override 
protected void onResume() { 
    super.onResume(); 
    connection = new ServiceConnection() { 
     @Override 
     public void onServiceDisconnected(ComponentName name) { 
      service = null; 
     } 
     @Override 
     public void onServiceConnected(ComponentName name, IBinder service) { 
      shareInfos.this.service = (IService) service; 
     } 
    }; 
    bindService(new Intent(this, shareInfos.class), connection, 
      Context.BIND_AUTO_CREATE); 
} 
@Override 
protected void onPause() { 
    super.onPause(); 
    if (service != null) { 
     service = null; 
     unbindService(connection); 
    } 
} 

Thats my hizmetin kodudur:

public class ExampleService extends AbstractService { 
private static final String SERVICE_NAME = "ExampleService"; 
public ExampleService() { 
    super(SERVICE_NAME); 
} 
@Override 
public AbstractRegistration getRegistration() { 
    return new AbstractRegistration() { 
     @Override 
     public String getApplicationName() { 
      return getResources().getString(R.string.application_name); 
     } 
     @Override 
     public String getApplicationDescription() { 
      return getResources().getString(R.string.application_description); 
     } 
     @Override 
     public PendingIntent getApplicationSettings() { 
      return PendingIntent.getActivity(getApplicationContext(), 0, new Intent(getApplicationContext(), ExampleActivity.class), 0); 
     } 
     @Override 
     public boolean requiresStorage() { 
      return true; 
     } 
     @Override 
     public boolean requiresQueries() { 
      return true; 
     } 
     @Override 
     public boolean requiresRecognition() { 
      return true; 
     } 
    }; 
} 

}

İşte benim bildirim dosyası geçerli: Yardımlarınız için şimdiden

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="eu.gambas.example.android" > 

<uses-sdk 
    android:minSdkVersion="10" 
    android:targetSdkVersion="15" /> 

<uses-permission android:name="eu.gambas.permission.ACCESS" /> 
<uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
    android:maxSdkVersion="18" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission 
    android:name="android.permission.READ_EXTERNAL_STORAGE" 
    android:maxSdkVersion="18" /> 

<application 
    android:icon="@drawable/icon" 
    android:label="@string/application_name" > 
    <activity 
     android:name="com.example.egm.exampleandroid.ExampleActivity" 
     android:label="@string/application_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.example.egm.exampleandroid.ResultActivity" /> 
    <activity android:name="com.example.egm.exampleandroid.shareInfos" /> 
    <activity android:name="com.example.egm.exampleandroid.testActivity" /> 
    <service 
     android:name="com.example.egm.exampleandroid.ExampleService" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="eu.gambas.action.start" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="eu.gambas.action.stop" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="eu.gambas.action.result" /> 
     </intent-filter> 
    </service> 
</application> 

teşekkürler!

+0

o apaçık por iyilik görelim faaliyetinden hizmeti almak için. – ApolloSoftware

+0

Birçok etkinliğe yönelik hizmetler dağınık hale gelir. Bununla ilgili iki yol var. Uygulama sınıfının alt sınıfını seçerim ve bazı özel işler yapardım. İkinci yol, birden fazla aktiviteyi parçalara dönüştürmek, böylece servisin işini daha iyi hale getirecek! – ApolloSoftware

+0

Bildiri dosyamı soruma ekledim. Parçaların kullanımıyla ilgili olarak, onları hizmete nasıl bağlarız? Teşekkürler! – sabrina2020

cevap

4

Hizmet çağrısının aynı nesnesini hem etkinliklerde kullanmanız gerekir. Bunu yapmanın en iyi yolu, hizmeti başlatmak ve durdurmak için kod yazmanız gereken Uygulama sınıfını genişletmektir. Daha sonra herhangi bir etkinliğe hizmete erişebilirsiniz.

public class AppController extends Application { 

    private static AppController mInstance; 
    private ExampleService service; 
    public static synchronized AppController getInstance() { 
      return mInstance; 
    } 

    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
    } 
    public void startService(){ 
    //start your service 

    } 
    public void stopService(){ 
    //stop service 
    } 
    public ExampleService getService(){ 
    } 
    } 

Şimdi

AppController.getInstance().getService(); 
+0

@Jlthin bunu biraz daha geliştirebilir miydin? Spesifik olarak, getService yöntemine ne gitmeli? StartService onCreate() içinde çağrılır mı? – Atticus29

+0

Uygulama sınıfındaki nesnelere başvurular kaydetmek çok kötü bir uygulama değil mi? http://www.developerphil.com/dont-store-data-in-the-application-object/ – estoke

İlgili konular