在Android Helper类中使用Context和Activity有什么区别?

时间:2013-08-03 11:10:38

标签: android android-activity helper android-context

我正在使用帮助器类,并想知道使用Acitvity对象和使用Context对象之间的实际区别是什么。

假设我有一个类,并说我在这个类中创建一个帮助对象:

Helper h = new Helper(this);

现在我可以像这样设置我的助手类:

public class Helper {
    private Activity a;

    public Helper(Activity a) {
        this.a = a;
    }
}

或者我可以这样做:

public class Helper {
    private Context c;

    public Helper(Context c) {
        this.c = c;
    }
}

我应该何时使用哪种方法?有什么优点和缺点?

1 个答案:

答案 0 :(得分:1)

使用:

class PiWorker : public NanAsyncWorker {
 public:
  PiWorker(NanCallback *callback, int points)
    : NanAsyncWorker(callback), points(points) {}
  ~PiWorker() {}

  // Executed inside the worker-thread.
  // It is not safe to access V8, or V8 data structures
  // here, so everything we need for input and output
  // should go on `this`.
  void Execute () {
    estimate = Estimate(points);
  }

  // Executed when the async work is complete
  // this function will be run inside the main event loop
  // so it is safe to use V8 again
  void HandleOKCallback () {
    NanScope();

    Local<Value> argv[] = {
        NanNull()
      , NanNew<Number>(estimate)
    };

    callback->Call(2, argv);
  };

 private:
  int points;
  double estimate;
};

// Asynchronous access to the `Estimate()` function
NAN_METHOD(CalculateAsync) {
  NanScope();

  int points = args[0]->Uint32Value();
  NanCallback *callback = new NanCallback(args[1].As<Function>());

  NanAsyncQueueWorker(new PiWorker(callback, points));
  NanReturnUndefined();
}

比使用更具体:

public Helper(Activity a) {
        this.a = a;
    }

这意味着(例如),如果您致电public Helper(Context c) { this.c = c; } 如果你有两个“具有不同返回类型的构造函数”,它将首先引用Helper(MainActivity);! 。 相近: Helper(Activity a)Class(Object o) 调用Class(String s)会导致Class(null)而不是Class(String s)

的回复

上下文是基础对象,因此每个活动都会扩展上下文

Class(Object o)

Documentation

希望这会有所帮助。