gpt4 book ai didi

android - 在 Bundle 中重新启动 Activity 时保存 GoogleApiClient

转载 作者:行者123 更新时间:2023-11-30 02:05:05 26 4
gpt4 key购买 nike

我的应用程序具有主题更改功能(即 Activity 正在重新启动)。是否有可能以某种方式将 GoogleApiClient 及其所有回调状态和参数保存到 onSaveInstanceState() 中的 Bundle 中,这样我就不需要重建每次?

我正在使用 Google Cast Api 客户端(适用于 Chromecast 设备)。

                mApiClient = new GoogleApiClient.Builder(mContext)
.addApi(Cast.API, apiOptionsBuilder.build())
.addConnectionCallbacks(mConnectionCallbacks)
.addOnConnectionFailedListener(mConnectionFailedListener)
.build();

mApiClient.connect();

我发现可以不 disconnect() 这个客户端。但在此之后仍然是 mApiClient = null

我还尝试将 mApiClient 设置为 savedInstanceState.putParcelable()savedInstanceState.putSerializeble() 但此对象不可打包或可序列化。

GoogleApiClient 启动器的完整代码:

 /**
* Start the receiver app
*/
private void launchReceiver() {
try {
mCastListener = new Cast.Listener() {
@Override
public void onApplicationDisconnected(int errorCode) {
Log.d(TAG, "application has stopped");
teardown();
}

};
// Connect to Google Play services
mConnectionCallbacks = new ConnectionCallbacks();
mConnectionFailedListener = new ConnectionFailedListener();
Cast.CastOptions.Builder apiOptionsBuilder = Cast.CastOptions
.builder(mSelectedDevice, mCastListener);

if (mApiClient == null) {
mApiClient = new GoogleApiClient.Builder(mContext)
.addApi(Cast.API, apiOptionsBuilder.build())
.addConnectionCallbacks(mConnectionCallbacks)
.addOnConnectionFailedListener(mConnectionFailedListener)
.build();

mApiClient.connect();
}
} catch (Exception e) {
Log.e(TAG, "Failed launchReceiver", e);
}
}

每次主题更改时重新连接到 Chromecast 设备并不是真正的用户友好。有什么解决办法吗?

最佳答案

您应该在服务中维护 googleapiclient 连接,而不是在配置更改期间可能被终止的 Activity 中。您的主题更改与 apiclient 对象无关。因此,最好将 UI 和核心逻辑分离以避免此类问题。

关于android - 在 Bundle 中重新启动 Activity 时保存 GoogleApiClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30801367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com