Java 活动-如何与他们合作?
我是android新手,我想为它创建一个简单的应用程序。这就是它的工作原理:Java 活动-如何与他们合作?,java,android,android-activity,Java,Android,Android Activity,我是android新手,我想为它创建一个简单的应用程序。这就是它的工作原理: 应用程序有3个活动:主活动、创建玩家活动、连接拒绝活动。 主要活动显示玩家列表 创建玩家活动允许用户创建帐户 当与服务器的连接中断时,将显示“连接被拒绝”活动 应用程序流如下所示(“->”表示应用程序允许从一个活动转到另一个活动): 主->创建 创建->主(使用后退按钮) *->连接被拒绝->*:此活动是特殊的,因为当与服务器的连接被拒绝时,它将显示在顶部,因此它独立于其他活动,可以随时显示 应用中使用了套接字
- 主要活动显示玩家列表
- 创建玩家活动允许用户创建帐户
- 当与服务器的连接中断时,将显示“连接被拒绝”活动
- 主->创建
- 创建->主(使用后退按钮)
- *->连接被拒绝->*:此活动是特殊的,因为当与服务器的连接被拒绝时,它将显示在顶部,因此它独立于其他活动,可以随时显示
观察者
,因此当数据更改时,可观察者
会通知它,例如:
- 用户已创建帐户:服务器将向所有用户发送通知,告知某些用户已创建帐户,因此需要更新
主要活动中的玩家列表
- 由于某些问题,服务器已关闭:客户端每5秒检查一次连接,如果连接被拒绝,它将向
活动发送通知。在此之后,信息活动应显示在其他(活动)活动的顶部连接被拒绝
- 最好的方法是,如果
活动将一直处于活动状态,因此我可以随时显示/隐藏它连接被拒绝
连接被拒绝
活动?应用程序中的几乎所有东西都正常工作(连接被拒绝活动会被通知连接被拒绝),但我不知道如何将其置于首位拒绝连接的活动。用户不应该有可能返回到被阻止的活动
public class ConnectionRefusedActivity extends Activity implements Observer {
private ServerService service;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
service = ServerService.getInstance();
service.addObserver(this);
progressDialog = new ProgressDialog(this);
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setMessage("Unable to connect to server. Click OK to reconnect.");
alertDialog.setButton("OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
service.connect();
}
});
progressDialog.setMessage("Please wait...");
// this method tries to connect to server; if it fails `service` will sernd notification to this activity with data `false`
service.connect();
}
@Override
public void update(final Observable observable, final Object data) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (observable instanceof ServerService) {
boolean isConnected = (Boolean) data;
if (isConnected) {
progressDialog.dismiss();
alertDialog.dismiss();
}
else {
// this will be called if connection with server has been refused; the problem is that I don't know how to bring this activity to top
// ATTENTION! I want to bring this activity to top here
progressDialog.show();
alertDialog.show();
}
}
}
});
}
}
- 用户处于主要活动中
- 用户想要创建新玩家,所以他去创建用户活动
- 用户希望单击“创建用户”,但此时拒绝与服务器的连接
被通知连接已被拒绝,因此它向用户显示信息“连接已被拒绝。是否要重新连接?”连接被拒绝活动
- 用户单击“是,我想重新连接”。此时服务器正在工作,所以应用程序尝试重新连接并隐藏
连接被拒绝的活动
这就是你能做的
不要将
连接拒绝活动
作为观察者。你休息的2个活动应该是观察者。最好的方法是,保留一个实现Observer的BaseActivity。当通知观察者时,通过调用startActivityForResult
打开connectionrefuedsactivity
。当用户尝试重新连接时,将结果发送回以重新连接。在各自的活动中重新连接。您所说的“到达顶端”是什么意思?如果您开始一项活动,它将自动被带到顶部。。是否要带来一个已打开的拒绝活动?这意味着当与服务器的连接被拒绝时,该活动需要对用户可见。例如:用户正在从主活动
移动到创建播放器活动
,当他想要创建新播放器时,与服务器的连接中断。此时将显示“连接被拒绝”活动,并通知用户该活动。清楚吗?什么代码正在监视与服务器的连接,比如说它是一项服务,您可以从中广播以启动活动。谢谢。我将试着用这种方式做。