Java 安卓:我可以把全局变量放在广播接收器中吗?

Java 安卓:我可以把全局变量放在广播接收器中吗?,java,android,android-broadcastreceiver,Java,Android,Android Broadcastreceiver,我有两个类,我想让它们相互交流: 首先是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 somethin

我有两个类,我想让它们相互交流:

首先是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; }
}
public class MainActivity extends AppCompatActivity {

    private Receiver receiver;

    protected void onCreate(Bundle savedInstanceState) {
        receiver.setVar; 
        //Bunches of other codes 
}
然后我有另一个类,我希望用它来更改
Receiver
MainActivity.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; }
}
public class MainActivity extends AppCompatActivity {

    private Receiver receiver;

    protected void onCreate(Bundle savedInstanceState) {
        receiver.setVar; 
        //Bunches of other codes 
}
Receiver
类侦听SMS消息并作出响应,它扩展了广播接收器

Receiver
class中的
main活动
class更改设置

由于原始代码将所有变量都放在了onReceive()中

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; }
}
public class MainActivity extends AppCompatActivity {

    private Receiver receiver;

    protected void onCreate(Bundle savedInstanceState) {
        receiver.setVar; 
        //Bunches of other codes 
}
  • 如果将变量var置于方法之外,我是否能够在
    Receiver
    类中更改变量var

  • MainActivity
    能否访问和更改
    Receiver
    类中的变量

  • Receiver
    类中的方法()是否有效

以下答案仅对
广播接收器
有效,该接收器将在
活动中以编程方式实例化和注册/取消注册

对于将在
AndroidManifest
中声明并由系统实例化的
BroadcastReceiver
,答案将不起作用,因为一旦
onReceive()
返回,接收器将被视为不再活动,下次将创建一个新实例


Receiver
是一个常规的
Java
对象,所以

如果我将变量var放在
onReceive()
之外,我是否能够更改Receiver类中的变量var

var
Receiver
类的类成员

MainActivity能否访问和更改Receiver类中的变量

MainActivity
具有对
receiver
类实例的
receiver
引用

Receiver类中的方法()有效吗


对。您可以在
接收器
初始化后调用它。

我读过的书:*广播接收器仅在onReceive()方法运行时存在。因此,您需要在onReceive()中编写所有代码。像实例变量这样的事情没有意义,因为每次执行onReceive()时它们都会超出作用域。**这是否意味着在它工作时,不建议将其置于onReceive()之外?