2013-06-02 3 views
3

저는 안드로이드가 처음이에요. 간단한 응용 프로그램을 만들고 싶습니다. 이것은 작동해야하는 방법입니다 :활동 - 함께 일하는 방법?

    응용 프로그램에는 주 활동, 플레이어 활동 만들기, 연결 거부 활동이 있습니다.
    • 주요 활동은 플레이어 작업을 만들
    • 는 서버와의 연결이
    • 을 중단되었을 때 활동이 표시됩니다 거부 사용자가 계정을
    • 연결을 만들 수 있습니다 플레이어 목록을 보여줍니다
  1. 앱 흐름이 ("처럼 보인다 -> "애플리케이션이 하나 개의 활동으로부터), 다른 이동 할 수 있다는 의미
    • main- 작성>
    • 창조하고> 주 (위로하여 버튼),
    • * -> connection_refused -> * : 서버와의 연결이 다른 활동의 제약을받지 않으며, 모든 시간
  2. 소켓에 표시 할 수 있도록 거부 된 경우가 상단에 표시되기 때문에이 활동은 특별하다 연결은 응용 프로그램에서 사용되는
  3. 데이터 변경, 예를 들면 때 모든 활동은 observer은 그래서 observable 통지 될 것이다
  4. :
    • 사용자가 계정을 만들었습니다 : 서버는 일부 사용자가 목록 있도록 계정을 만든 것을 모든 사용자에게 알림을 보내드립니다 main activity에있는 플레이어의 업데이트가 필요합니다.
    • 일부 문제로 인해 서버가 종료되었습니다. 클라이언트는 5 초마다 연결을 확인하고 연결이 거부되면 connection refused 활동으로 알림을 보냅니다. 그 후 정보 활동은 다른 (활동중인) 활동 위에 표시되어야합니다.

      1. 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(); 
            } 
           } 
          } 
         }); 
        } 
    } 
    
    1. 예 사용 사례 :
    2. 사용자가 자신이 사용자의 활동을
    3. 사용자를 만들 간다 있도록 새로운 선수를 만들
      • 사용자가 주요 활동에 "사용자 만들기"를 클릭하고 싶지만이 순간 서버 연결이 거부됩니다
      • connection refused activity에 연결이 거부되었으므로 "연결이 거부되었습니다."라는 정보가 표시됩니다. 다시 연결 하시겠습니까? "사용자에게
      • 사용자가 클릭 수"그래, 난.이 때 서버가 작동 때문에 응용 프로그램은 다시 연결을 시도하고 connection refused activity
    +0

    "맨 위로 가져 가세요"는 무엇을 의미합니까? 활동을 시작하면 자동으로 맨 위로 이동합니다. 이미 열려있는 쓰레기 활동을 가져 오시겠습니까? – stinepike

    +0

    이것은 서버와의 연결이 거부되었을 때이 액티비티를 사용자에게 보여줘야 함을 의미합니다. 예를 들어, 사용자가 '주 활동'에서 '플레이어 활동 만들기'로 이동하고 새 플레이어를 만들려면 서버 연결이 중단됩니다. 이 순간에 '연결 거부 활동'이 표시되고이를 사용자에게 알립니다. 명백합니까? – pepuch

    +0

    어떤 코드가 서버에 대한 연결을 모니터링하는지, 서비스와 관련하여 방송을 통해 활동을 시작할 수 있습니다. – Neil

    답변

    1

    숨 깁니다 "다시 연결하려는 이것은 무엇이다 할 수있다,

    나머지 두 개의 활동은 옵저버가되어야한다. 이것을하는 가장 좋은 방법은 Observer를 구현하는 BaseActivity를 유지하는 것이다. 옵저버가 알리면, ConnectionRefusedActivity을 불러라. startActivityForResult 그리고 사용자가 다시 연결을 시도하면 결과를 보냅니다. 다시 연결하십시오. 각각의 활동에서 재 연결을 다시하십시오.

    +0

    감사합니다. 나는 이렇게하려고 할 것입니다. – pepuch

    관련 문제