Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android Java中传递上下文是不好的,但如何访问服务中的活动?_Java_Android_Android Context - Fatal编程技术网

在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组件生成一个对话框-这听起来像是个好主意吗:-)?它是前台服务的一部分。我不确定前台服务是否是个坏主意。