Android: 我可以将全局变量放在 BroadCastReceiver 中吗?
Android: can I put Global Variables in BroadCastReceiver?
我有 2 个class我希望它们相互交互:
首先是Receiver.java:
public class Receiver extends BroadcastReceiver{
private int var = 0;
public void onReceive(Context context, Intent intent) {
//Bunch of codes here
method();
//use var to do something}
private void method() {
//do something}
public void setVar(int i) {
var= i; }
}
然后我有另一个class希望用来改变Receiver
中的变量,MainActivity.java:
public class MainActivity extends AppCompatActivity {
private Receiver receiver;
protected void onCreate(Bundle savedInstanceState) {
receiver.setVar;
//Bunches of other codes
}
Receiver
class 监听短信并响应,它扩展了 BroadcastReceiver.
MainActivity
class 更改 Receiver
class 中的设置。
由于原始代码将所有变量放在 onReceive():
中
如果我将变量 var 放在方法之外,是否可以更改 Receiver
class 中的变量?
MainActivity
可以访问和更改 Receiver
class 中的变量吗?
Receiver
class中的方法()有效吗?
下面的答案是 仅 对要实例化的 BroadcastReceiver
有效,registered/unregistered 在 [=11] 中以编程方式=] 如 OP 所问.
对于要在 AndroidManifest
中声明并由系统实例化的 BroadcastReceiver
,答案 将不起作用 ,因为一旦onReceive()
returns receiver被认为不再活跃,下次将创建一个新实例。
Receiver
是一个普通的 Java
对象,所以
Will I be able to change variable var in the Receiver class if I put it outside of onReceive()
?
是的。 var
是 Receiver
class 的 class 成员。
Can MainActivity access and change variable in the Receiver class?
是的。 MainActivity
具有对 Receiver
class 实例的 receiver
引用。
Does the method() within Receiver class work?
是的。您可以在 receiver
初始化后调用它。
我有 2 个class我希望它们相互交互:
首先是Receiver.java:
public class Receiver extends BroadcastReceiver{
private int var = 0;
public void onReceive(Context context, Intent intent) {
//Bunch of codes here
method();
//use var to do something}
private void method() {
//do something}
public void setVar(int i) {
var= i; }
}
然后我有另一个class希望用来改变Receiver
中的变量,MainActivity.java:
public class MainActivity extends AppCompatActivity {
private Receiver receiver;
protected void onCreate(Bundle savedInstanceState) {
receiver.setVar;
//Bunches of other codes
}
Receiver
class 监听短信并响应,它扩展了 BroadcastReceiver.
MainActivity
class 更改 Receiver
class 中的设置。
由于原始代码将所有变量放在 onReceive():
中如果我将变量 var 放在方法之外,是否可以更改
Receiver
class 中的变量?MainActivity
可以访问和更改Receiver
class 中的变量吗?Receiver
class中的方法()有效吗?
下面的答案是 仅 对要实例化的 BroadcastReceiver
有效,registered/unregistered 在 [=11] 中以编程方式=] 如 OP 所问.
对于要在 AndroidManifest
中声明并由系统实例化的 BroadcastReceiver
,答案 将不起作用 ,因为一旦onReceive()
returns receiver被认为不再活跃,下次将创建一个新实例。
Receiver
是一个普通的 Java
对象,所以
Will I be able to change variable var in the Receiver class if I put it outside of
onReceive()
?
是的。 var
是 Receiver
class 的 class 成员。
Can MainActivity access and change variable in the Receiver class?
是的。 MainActivity
具有对 Receiver
class 实例的 receiver
引用。
Does the method() within Receiver class work?
是的。您可以在 receiver
初始化后调用它。