2011-05-12 3 views
0

서버와 장치간에 유지 관리되는 사용자 세션에서 작동하는 응용 프로그램이 있습니다. 필자는 사용자가 로그인 한 경우 1 분마다 서버에 ping을 실행하여 ping 기술을 사용하여 장치와 서버간에 세션을 유지합니다.이 작업은 백그라운드 스레드를 사용하여 수행됩니다.SCREEN OFF이고 충전기에서 분리되면 ACTIVITY 스레드는 어떻게됩니까?

  1. 때로는 화면을 끄고 전원 소스에서 장치를 분리하면 배경 스레드가 죽습니다.

  2. 때때로 스레드가 활성화되어 있지만 WiFi 안테나가 꺼지고 내 핑이 실패합니다.

내 접근 방식이 맞습니까? 이 작업을 수행하는 더 좋은 방법이 있습니까?

내 요구 사항 :. Logcat에 메시지를 작성하는 나는 여러 가지 이유로 살아 세션을 유지하기 위해 내 서버 분마다 핑 (ping) 할 필요가 나는 사용자가 로그인 한 경우에만이 작업을 수행해야

답변

1

당신은 와이파이 연결을

private boolean checkInternetConnection() 
{ 
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE); 
    return conMgr.getActiveNetworkInfo().isConnectedOrConnecting(); 
} 

만약 당신이 매니페스트

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 

이를 사용하여 와이파이 켤 수 있습니다 거짓 checkInternetConnection() ==하고이를 확인하기 위해 이것을 사용할 수 있습니다 귀하의 코드에

귀하의 질문에 대한 정확한 대답은 아니지만 도움이되기를 바랍니다.

+0

좋습니다. 고마워 조지. 그러나 앱이 사용자의 지식없이 WIFI에 연결하는 것이 좋습니다? 사용자가 WIFI의 범위를 벗어난 경우 어떻게 처리합니까? 앱이 셀룰러 데이터를 사용해야합니까? 우리가 WIFI처럼 셀룰러 데이터를 처리 할 수 ​​있습니까? – AKh

+0

사용자가 앱을 설치하면 사용자의 지식없이 WIFI에 연결할 수있는 모든 사용 권한을 읽습니다. 미안하지만, 미안하지만, 나는이 질문에 대답하려고하지 않았다. 왜냐하면 필요가 없었기 때문이다. – George

+0

오, 괜찮아. 나는 화면이 꺼져있을 때 WIFI가 꺼져있을 때 WIFI 안테나를 활성화하고 네트워크에 다시 연결하기 위해 WIFIMANAGER를 걷어 내면 사용자의 지식을 의미합니다. 어떤 사용자가 기대하지 않습니다. 괜찮 니? 또는 일을하는 것이 좋지 않은가? 단지 그 점을 분명히하고 싶습니다. – AKh

0

사용 Log.d 때 , onStop, onDestroy, onCreate, onStartonResume과 같은 Activity 수명주기 이벤트가 발생합니다. 또한 브로드 캐스트 이벤트를 기록하기 위해 BroadcastReceiver을 만드는 것이 가장 좋습니다.