我在活动中有一个按钮。当我按下它时,它将加载另一个活动。在此活动中,我有一个自定义网格视图,每个单元格中都有描述和图像。我正在通过异步任务从远程服务器填充网格视图:
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()。我在 gridActivity 的 onCreate() 中调用这个函数(第二个活动)
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();
}
我正在检查我保留按钮的第一个活动中的条件。只有当我有 Internet 连接时,我才会触发启动活动。
现在进入我的问题,如果我有 Internet 连接并且我按下按钮,startacvitiy 将触发,它会移动到第二个活动。在第二个活动的 onCreate() 中,我调用了 testAsync()。现在它将显示一个加载对话框,在后台我将从远程服务器获取数据。
现在,如果我关闭调制解调器,应用程序会冻结 5-6 秒,然后它将强制关闭。那么我该如何处理这个异常呢?
doInbackgorund() 内部的编码需要 Internet 连接,这可能是我断开 Wi-Fi 时导致崩溃的原因。我该如何处理这个崩溃?