在Android Java中传递上下文是不好的,但如何访问服务中的活动?
我知道传递静态上下文是不允许的,应该避免。我理解背后的原因 我的问题是,我们如何访问某些调用,这些调用在其参数中需要“活动”。例如:在Android Java中传递上下文是不好的,但如何访问服务中的活动?,java,android,android-context,Java,Android,Android Context,我知道传递静态上下文是不允许的,应该避免。我理解背后的原因 我的问题是,我们如何访问某些调用,这些调用在其参数中需要“活动”。例如: public class BackgroundServiceParent extends Service implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { mGoogleApiClient = new Googl
public class BackgroundServiceParent extends Service implements
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Fitness.HISTORY_API)
.addApi(Fitness.CONFIG_API)
.addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ))
.useDefaultAccount()
.addConnectionCallbacks(
new GoogleApiClient.ConnectionCallbacks() {
....
if (!result.hasResolution()) {
// Show the localized error dialog
GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(),
(Activity) applicationContext, 0).show();
return;
}
if (!authInProgress) {
try {
authInProgress = true;
result.startResolutionForResult((Activity) applicationContext, REQUEST_OAUTH);
} catch (IntentSender.SendIntentException e) {
Log.e(TAG,
Exception while starting resolution activity", e);
}
}
}
在这种情况下,任何有助于理解最佳方法的帮助都将不胜感激。如果没有,从服务访问活动是不好的。您可以使用binder在活动中获取服务实例,然后可以在服务中注册一些回调以与活动通信。查看此链接以获取一个示例,您不知道,从服务访问活动是不好的。您可以使用binder在活动中获取服务实例,然后可以在服务中注册一些回调以与活动通信。查看此链接以获取示例从一项服务到您的活动有多种沟通方式。处理程序、广播接收器和接口。从服务到活动的通信方式很多。处理程序、广播接收器和接口。您可能需要重新考虑您的设计:您试图从后台非UI组件生成一个对话框-这听起来像个好主意吗:-)-它是前台服务的一部分。我不确定前台服务是否是个坏主意。您可能需要重新考虑您的设计:您试图从后台非UI组件生成一个对话框-这听起来像是个好主意吗:-)?它是前台服务的一部分。我不确定前台服务是否是个坏主意。