【问题标题】:Getting Android's system preferences without having any context在没有任何上下文的情况下获取 Android 的系统首选项
【发布时间】:2009-11-29 18:11:56
【问题描述】:

在 Android 实用程序类中,我想在类中获取系统偏好值,但我没有那里的上下文,因为调用它的类也没有上下文。我发现对于资源可以使用静态Resources.getSystem() 函数。有没有类似的方法可以在没有上下文的情况下获取系统偏好?

我的课程既不是活动也不是服务。这是一个实用程序类。如果需要可以提供更多信息。

【问题讨论】:

  • 出于好奇,我现在的情况和你一模一样。介意透露一下你最终决定的事情吗?

标签: android android-context


【解决方案1】:

你必须给它发送一个上下文——不要试图逃避你的责任。 :) 您的实用程序类必须在某个级别被活动或服务调用,并且您将通过每个方法调用一直传递该上下文。我知道这很烦人,我自己也不得不做类似的事情。将代码保持简单并要求尽可能少的方法调用来完成某件事是一种激励。

【讨论】:

  • 不,这与懒惰无关。我正在自定义整个 Android,这个类是由一个没有上下文的内部 Android 类调用的。
  • 那么首选项不是您想要用来存储信息的。首选项的范围是应用程序/活动。而是将信息存储在磁盘上。
  • 谢谢。这可能会有所帮助。我应该检查一下。
【解决方案2】:

我使用以下 Hack:http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/

本质上,您将上下文指针作为静态变量隐藏在 Activity 中。如果您的截止日期很紧,我只会推荐这个丑陋的黑客。

此外,如果您正在编写实用程序类,您可能应该要求(正如许多 Android 实用程序所要求的那样)调用应用程序为您提供上下文作为构造函数的一部分。

【讨论】:

  • 认为那里的链接烂掉了:)
【解决方案3】:

你可以创建一个上下文:

Context myContext = createPackageContext("com.example", 0);

【讨论】:

  • 当您对此答案投反对票时,请添加 cmets。所以我们可以了解为什么这不是一个好的解决方案。
  • createPackageContext()Context 上的非静态方法,因此您需要已经拥有Context 才能调用它。他的问题是,如果您只想访问系统资源,他不想要求您到处传递上下文对象。
猜你喜欢
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
  • 1970-01-01
相关资源
最近更新 更多