Android:我可以将Global Variables放入BroadCastReceiver吗?

时间:2016-03-06 23:38:57

标签: java android android-broadcastreceiver

我有2个课程,我希望他们互相交流:

首先是 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; }
}

然后我有另一个类,我希望用它来改变Receiver中的变量, MainActivity.java

public class MainActivity extends AppCompatActivity {

    private Receiver receiver;

    protected void onCreate(Bundle savedInstanceState) {
        receiver.setVar; 
        //Bunches of other codes 
}

Receiver班级收听短信并做出回应,扩展 BroadcastReceiver

MainActivity类中的Receiver班级更改设置。

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

  • 如果我把它放在方法之外,我是否可以在Receiver类中更改变量 var

  • MainActivityReceiver访问和更改变量吗?

  • Receiver班级中的方法()是否有效?

1 个答案:

答案 0 :(得分:2)

下面的答案是仅对<{1}}有效}要在BroadcastReceiver 内以Activity 的形式进行实例化和注册/取消注册/强>

答案对于要在BroadcastReceiver内声明并由系统实例化的AndroidManifest不会工作,因为{{1} {{1}返回接收器被认为不再处于活动状态,下次将创建一个新实例。

onReceive()是常规Receiver对象,因此

  

如果我将它放在Java之外,我能否在Receiver类中更改变量?

是。 onReceive()var类的成员。

  

MainActivity可以在Receiver类中访问和更改变量吗?

是。 Receiver具有对MainActivity类实例的receiver引用。

  

Receiver类中的method()是否有效?

是。您可以在Receiver初始化后调用它。