バックグラウンドで実行されるネットワーク サービスがあります。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();
}
これが最善の方法ですか、それともどこか間違っていますか?