バックグラウンドで実行されるネットワーク サービスがあります。mConnectionアクティビティ内にこのグローバル変数があります
protected ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder binder) {
serviceobject = ((NetworkService.MyBinder) binder).getService();
}
public void onServiceDisconnected(ComponentName className) {
serviceobject = null;
}
};
次に、アクティビティのonCreate(..)使用でサービスをバインドします
bindService(new Intent(this, NetworkService.class),
mConnection,Context.BIND_AUTO_CREATE);
NetworkService クラスには内部クラス MyBinder があります
public class MyBinder extends Binder {
NetworkService getService() {
return NetworkService.this;
}
}
アクティビティから Service メソッドを呼び出すには、を使用serviceobjectし、for each メソッド呼び出しを作成しAsyncTaskます (Activity から Service メソッドを呼び出すと、サービスの使用が無効になることがわかっています。これを、関与しないライト メソッドに使用します)。計算量が多い)
Serviceこれは、を使用してからのデータを直接処理するのに役立ちますserviceobject。Activityの Serviceのバインドを解除しますonDestroy()
@Override
protected void onDestroy()
{
unbindService(mConnection);
super.onDestroy();
}
これが最善の方法ですか、それともどこか間違っていますか?