3
我是Android新手,我想为它创建简单的应用程序。这是它应该如何工作:活动 - 如何与他们合作?
- 应用程序有3个活动:主要活动,创建玩家活动,连接拒绝活动。
- 主要活动表明球员名单
- 创建玩家活动允许用户创建账户
- 连接时与服务器连接已中断 拒绝显示活动
- 应用流程是这样的(“ - >的“是指应用程序允许去从一个活动到另一个):
- main->创建
- create->主(使用后退按钮)
- * - > connection_refused - > *:这个活动是特殊的,因为它会在上面显示,当与服务器的连接已被拒绝,因此是独立于其他活动,并可以在任何时间
- 插座显示连接在应用程序中使用
- 每个活动
observer
所以它将被observable
通知时数据的变化,例如:- 用户已创建帐户:服务器会发送通知给所有用户,一些用户已创建帐户,以便列表需要更新
main activity
的球员 - 服务器由于某些问题而被关闭:客户端每隔5秒检查一次连接,如果连接被拒绝,它将向
connection refused
活动发送通知。之后,信息活动应该显示在其他(主动)活动之上。 - 最好的将是,如果
connection refused
活动将一直活着,所以我就可以显示/隐藏在任何时候
- 用户已创建帐户:服务器会发送通知给所有用户,一些用户已创建帐户,以便列表需要更新
问题:
- 如何显示
connection refused
在其他(主动)活动之上的活动?几乎应用程序中的所有内容都能正常工作(连接被拒绝的活动会被通知连接已被拒绝),但我不知道如何将其带到最前。 - 活动是否适合这个问题,或者我应该使用其他解决方案?
- 如果与服务器的连接已被拒绝,则应阻止所有活动,并应在顶部显示
connection refused
活动。用户不应该有可能回到被阻止的活动。
ConnectionRefusedActivity:
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();
}
}
}
});
}
}
- 示例使用情形:
- 用户为主要活动
- 用户希望让他去创造用户活动
- 用户创建新的播放器想点击“创建用户”,但此时与服务器的连接被拒绝
connection refused activity
被通知连接已被拒绝,因此它显示信息“连接已被拒绝。是否要重新连接?”用户- 用户点击‘是的,我要重新连接’,此时服务器工作,所以应用程序尝试重新连接,并隐藏
connection refused activity
你是什么意思的“带到上面”?如果你开始一项活动,它会自动进入顶部..你想带来一个已经打开的垃圾活动? – stinepike
这意味着当与服务器的连接被拒绝时,此活动需要对用户可见。例如:用户正在从“主要活动”转移到“创建玩家活动”,并且当他想创建新玩家时,与服务器的连接会中断。此时显示“拒绝连接活动”,并通知用户。清楚吗? – pepuch
什么是代码监视连接到服务器,说它的服务,你可以从那里开始广播活动。 – Neil