Java 安卓:我可以把全局变量放在广播接收器中吗?
我有两个类,我想让它们相互交流: 首先是Receiver.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
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置于方法之外,我是否能够在
类中更改变量varReceiver
能否访问和更改MainActivity
类中的变量Receiver
类中的方法()是否有效Receiver
广播接收器有效,该接收器将在活动中以编程方式实例化和注册/取消注册
对于将在AndroidManifest
中声明并由系统实例化的BroadcastReceiver
,答案将不起作用,因为一旦onReceive()
返回,接收器将被视为不再活动,下次将创建一个新实例
Receiver
是一个常规的Java
对象,所以
如果我将变量var放在onReceive()
之外,我是否能够更改Receiver类中的变量var
对var
是Receiver
类的类成员
MainActivity能否访问和更改Receiver类中的变量
对MainActivity
具有对receiver
类实例的receiver
引用
Receiver类中的方法()有效吗
对。您可以在接收器
初始化后调用它。我读过的书:*广播接收器仅在onReceive()方法运行时存在。因此,您需要在onReceive()中编写所有代码。像实例变量这样的事情没有意义,因为每次执行onReceive()时它们都会超出作用域。**这是否意味着在它工作时,不建议将其置于onReceive()之外?