我正在开发一个Android应用程序,并且我在一个活动上调用一个网络服务,在后台每5秒一次,现在假设他们是2个活动活动A活动B
在 Activity AI 上,每 5 秒获得一次 Web 服务响应,目前我控制在 Activity B 上,现在我想通过控制 B 上的活动来显示来自活动 A 的警报。
简而言之,我想在我现在所在的页面的一页上显示一些背景消息。
我是android新手,请建议我解决这个问题???
谢谢
基本上你需要发布者 - 订阅者模式。
http://docs.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html
检查链接它是我使用的最简单的发布订阅类,概念是,Activity B 订阅 Activity A,所以当 Activity A 有一些属性更改时,它会触发 Activity B 接收到的 propertyChange,并且未来的过程完成通过活动 B。
对于订阅Activity A,Activity B实现PropertyChangeListener,
一旦我提出的解决方案就是这个
像这样创建一个名为 callAlertBox.java 的类
public class callAlertBox {
private static Activity activity ;
public static Activity getActivity() {
return activity;
}
public static void setActivity(Activity mactivity) {
activity = mactivity;
}
public static void showMyAlertBox(){
AlertDialog ad = new AlertDialog.Builder(activity).create();
ad.setCancelable(true); // This blocks the 'BACK' button if false
ad.setMessage("Hello World");
ad.show();
}
}
现在,在每个可能调用此警报框的活动中,将此代码放在其 onResume() 方法中
@Override
protected void onResume() {
super.onResume();
callAlertBox.setActivity(Act1.this);
}
@Override
protected void onResume() {
super.onResume();
callAlertBox.setActivity(Act2.this);
}
现在你可以打电话
callAlertBox.showMyAlertBox();
从任何活动中,您都会收到警报框
编辑
MainActivity.java 文件
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Act1.class));
}
});
Button btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Act2.class));
}
});
Button btn3 = (Button) findViewById(R.id.button3);
btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Act3.class));
}
});
new CountDownTimer(365 * 24 * 60 * 60, 5000) {
public void onTick(long millisUntilFinished) {
callAlertBox.showMyAlertBox();
}
public void onFinish() {
//Done
}
}.start();
}
@Override
protected void onResume() {
super.onResume();
callAlertBox.setActivity(MainActivity.this);
}
}
现在您可以从这里看到我的倒计时计时器将在后台调用该方法,从而使对话框出现独立于您所在的任何活动,在我的情况下它是主要活动,在您的情况下可能有一些更新方法是经常叫对吗??只需使用该类来调用方法