1

バインドされたサービスは、アクティビティまたはコンポーネントがそれを必要とするまでのみ存続することを知っています。onBind 関数から MyLocalBinder クラスを呼び出す必要があります。なぜそうなのですか?直接呼び出せないのはなぜですか?

public class MyService extends Service {

private final IBinder myBinder = new MyLocalBinder();

public MyService() {
}

@Override
public IBinder onBind(Intent intent) {

    return myBinder;
}

public String getCurrentTime(){

    SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss", Locale.UK);
    return (df.format(new Date()));
}

public class MyLocalBinder extends Binder{

    MyService getService(){
        return MyService.this;
    }
}
}
4

1 に答える 1

1

同じアプリケーション内でバインダー呼び出しを使用している場合、これは、アクティビティなどの他のコンポーネントからサービス クラスの機能の一部にアクセスする方法です。

アプリケーション間でバインダー API 呼び出しを使用している場合、これは、アプリケーションからリモート機能を使用しようとしていることを意味します。2 つのアプリケーションが独自のプロセスで実行されるため、バインダーはセキュリティを備えたパイプのように機能します。

サービス クラスのメンバーに直接アクセスできないため、MyBinder クラスを直接呼び出すことはできません。bindservice はバインダー オブジェクトでコールバックを提供するため、このアプローチに従うことをお勧めします。

于 2015-09-26T04:22:46.153 に答える