我有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 ?
可MainActivity
类Receiver
访问和更改变量吗?
Receiver
班级中的方法()是否有效?
答案 0 :(得分:2)
下面的答案是仅对<{1}}有效1>}要在BroadcastReceiver
内以Activity
的形式进行实例化和注册/取消注册/强> 的
答案对于要在BroadcastReceiver
内声明并由系统实例化的AndroidManifest
,不会工作,因为{{1} {{1}返回接收器被认为不再处于活动状态,下次将创建一个新实例。
onReceive()
是常规Receiver
对象,因此
如果我将它放在
Java
之外,我能否在Receiver类中更改变量?
是。 onReceive()
是var
类的成员。
MainActivity可以在Receiver类中访问和更改变量吗?
是。 Receiver
具有对MainActivity
类实例的receiver
引用。
Receiver类中的method()是否有效?
是。您可以在Receiver
初始化后调用它。