2

問題:

アプリケーションがウェアラブル上で起動されてから DatalayerService が開始されるまでに、約 40 ~ 50 秒以上の顕著な遅延があります。

証拠:

09-15 10:19:09.594 455-475/? I/ActivityManager﹕ 表示 com.test.watches/.WatchfaceActivity: +860ms

09-15 10:20:05.104 1775-1775/? V/Watchface﹕ Google api クライアントの起動

09-15 10:20:05.234 1775-1775/? V/Watchface﹕ onCreate() で connect on google api クライアントを呼び出す


タイムスタンプから明らかなように、ユーザーがウェアラブルでアプリケーションを起動してからデータ転送が開始されるまでに、約 55 秒の遅延があります。

ユーザーは単にコードにバグがあると想定するだけなので、これは受け入れられません。

私のコードは典型的なワークフローのように見えます。接続が確立された後、物事はスムーズに実行されますが、起動時またはアプリの新規インストール時には、データ層への接続に時間がかかります!!

私のコード:

public class DataLayerListenerService extends WearableListenerService {

    private static final String TAG = "Watchface";

    GoogleApiClient mGoogleApiClient;

    @Override
    public void onCreate() {
        super.onCreate();
        Log.v("Watchface", "Starting up Google api client");

        mGoogleApiClient = new GoogleApiClient.Builder(getApplicationContext())
                            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                                @Override
                                public void onConnected(Bundle connectionHint) {
                                    Log.i(TAG, "onConnected: " + connectionHint);
                                }

                                @Override
                                public void onConnectionSuspended(int cause) {
                                    Log.i(TAG, "onConnectionSuspended: " + cause);
                                }
                            })
                            .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
                                @Override
                                public void onConnectionFailed(ConnectionResult result) {
                                    Log.i(TAG, "onConnectionFailed: " + result);
                                }
                            })
                            .addApi(Wearable.API)
                            .build();
        mGoogleApiClient.connect();
        Log.v("Watchface", "Called connect on google api client in onCreate()");

    }

この時点で、メイン アクティビティの onCreate() で DataLayerListenerService を手動で起動することを検討しています。それが推奨される方法だとは思いませんが、多くの選択肢があるかどうかはわかりません。

4

0 に答える 0