我正在开发一个Android应用程序,我正在调用一个活动的web服务,每5秒在后台,现在假设他们是2个活动 活动A. 活动B
关于活动A我每隔5秒就收到一次Web服务响应,目前我已经控制了活动B,现在我想通过控制B上的活动来显示来自活动A的警报。
简而言之,我想在一页的背景中显示一些消息,显示现在的页面。
我是android的新手请建议我解决这个问题???
由于
答案 0 :(得分:1)
基本上你需要发布者 - 订阅者模式。
http://docs.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html
检查链接它是我使用的最简单的发布订阅类, 概念是,活动B订阅活动A,因此,当活动A有一些属性更改时,它会触发活动B接收的propertyChange,并且将来的过程由活动B完成。
对于订阅活动A,活动B实现了PropertyChangeListener,
答案 1 :(得分:0)
我建议的解决方案就是这个
像这样创建一个名为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);
}
}
现在你可以从这里看到我的倒数计时器将在后台调用方法,使对话框显示独立于你所处的活动,在我的情况下,它是主要的Activity,在你的情况下,可能会有一些更新经常被称为正确的方法??只需使用该类调用方法