在Android(尤其是应用程序上下文)中实现构造函数的正确方法是什么?
作者:互联网
在android中实现构造函数的正确方法是什么?
似乎在活动或服务中,“ onCreate()”是神奇的地方.
我问的原因是因为我想确保自己在做正确的事情,宣布
属性放在我的类的顶部(尤其是上下文),然后在onCreate内设置属性值.
// Activity launched via an Intent, with some 'extras'
public class SomeActivity extends Activity {
private Context context;
private String foo;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the object attribute for later use, good or Bad to do this?
context = getApplicationContext();
Intent fooIntent = getIntent();
foo = fooIntent.getStringExtra("foo");
}
private void someMethodThatNeedsContext() {
// For example:
Cursor c = this.context.getContentResolver().query(foo, xxx, xxx);
// Or is it better practice to:
// A) Pass the context as a local variable to this method
// B) Use getApplicationContext() locally when needed
}
}
也许这些选项都可以,但我想不通?
您可能有任何特定的阅读和/或建议对我有很大的帮助.
解决方法:
选项B-因为您可以从Activity类中的任何非静态方法调用getApplicationContext().
实际上,Activity也是从Context派生的(在继承树中的某个位置.),因此您可以执行以下操作:
Cursor c = getContentResolver()....
您不必保留对上下文的引用.特别是不是静态的,这可能会导致问题.
而且您是正确的-由于通常不为自己的Activity创建自己的构造函数,因此将用于构造的代码放在onCreate中.
标签:constructor,android-context,android 来源: https://codeday.me/bug/20191101/1987143.html