활동에 단추가 있습니다. 그것을 누르면 다른 활동이로드됩니다. 이 실습에서는 각 셀에 설명과 이미지가있는 사용자 정의 격자보기가 있습니다. 비동기 작업을 통해 원격 서버에서 그리드보기를 채우는 중입니다.비동기 작업 사이에 인터넷 연결이 끊어지면 활동을 유지하는 방법
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (isInternetAvailable) {
Intent intent = new Intent(menuActivity.this,
gridActivity.class);
startActivity(intent);
}
else {
MyAlertDialog.ShowAlertDialog(menuActivity.this,
"",
"No network connection",
"OK");
}
}
});
여기서 testAsyncTask()를 공유하고 있습니다. I 버튼을 계속 여기서 I는 제 활성의 상태를 검사하고
private void testAsyncTask() {
new AsyncTask<Object, Object, Object>() {
@Override
protected void onPreExecute() {
progress_Dialog = ProgressDialog.show(a, "", "Loading");
}
@Override
protected Integer doInBackground(Object... params) {
try {
MenuService menuService = new MenuServiceImpl();
MenuServiceResponse pMenu = menuService.getMenu();
itemlist = pMenu.getMenu().getMenus();
return 0;
}
catch (MyServiceException e) {
MyAlertDialog.ShowAlertDialog(GridActivity.this, "", "No network connection detected.", "OK");
e.printStackTrace();
}
return 0;
}
@Override
protected void onPostExecute(Object result) {
if (progress_Dialog != null) {
progress_Dialog.dismiss();
}
try
{
adapter = new GridAdapter(
GridActivity.this, itemlist);
AllitemgridView.setAdapter(adapter);
}
catch(Exception e)
{
adapter = null;
MyAlertDialog.ShowAlertDialog(GridActivity.this, "", "Check Network Connection", "OK");
}
}
}.execute();
}
I는 (제 활성)의 gridActivity에서 onCreate()이 함수를 호출하고있다. 인터넷에 연결되어있는 경우에만 시작 활동을 시작하겠습니다.
내 문제는 인터넷에 연결되어 있고 버튼을 누르면 startacvitiy이 실행되고 두 번째 활동으로 이동합니다. 두 번째 활동의 onCreate()에서 testAsync()를 호출합니다. 이제로드 대화 상자가 표시되고 백그라운드에서 원격 서버에서 데이터를 가져옵니다.
모뎀을 끄면 응용 프로그램이 5-6 초 동안 멈추고 강제 종료됩니다. 그렇다면이 예외를 어떻게 처리 할 수 있습니까?
doInbackgorund() 내부의 코딩은 인터넷 연결이 필요하며 Wi-Fi에서 의 연결을 끊을 때이 충돌의 원인 일 수 있습니다. 이 충돌을 어떻게 처리 할 수 있습니까? 이 방법은 다른 스레드를하고 있기 때문에 당신은 doinbackground 방법이 사용할 수 없습니다
@ 피터 모텐슨은 시간 내 주셔서 감사를! – Jamshid