我正在开发一个应用程序,我想从后台服务器获取数据.我在后台使用service获取数据.现在我想处理网络异常,如果没有网络我想显示一个警告对话框并完成应用程序.在这里,我有一个问题,即完成服务类活动
显示异常ClassCastExcetption..Exception在这里提出(((Activity)mContext).finish())我尝试了很多,但我无法得到这个请任何人解决我的问题
显示异常ClassCastExcetption..Exception在这里提出(((Activity)mContext).finish())我尝试了很多,但我无法得到这个请任何人解决我的问题
public class InitialRequestService extends Service{
@Override
public IBinder onBind(Intent intent) {
// Todo Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// Todo Auto-generated method stub
super.onCreate();
new InitialRequestData(InitialRequestService.this).execute();
}
public class InitialRequestData extends AsyncTask<String,Void,Void> {
public InitialRequestData(Context context) {
this.mContext = context;
}
@Override
protected void onPreExecute() {
// Todo Auto-generated method stub
super.onPreExecute();
isNetworkAvailable = CheckNetWork.isConnectedToInternet(mContext);
}
@Override
protected Void doInBackground(String... params) {
//
}
@Override
protected void onPostExecute(FeatureResult result) {
// Todo Auto-generated method stub
super.onPostExecute(result);
if(result==null || isNetworkAvailable==false){
/*String message="Unable to connect to the server,please try again";
FieldsValdations.AlertErrorMessage(mContext,message,"Network failure");*/
final AlertDialog alert = new AlertDialog.Builder(mContext).create();
alert.setTitle("Network failure");
alert.setMessage("Unable to connect to the server,please try again");
alert.setButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
alert.dismiss();
((Activity) mContext).finish();
}
});
alert.setCancelable(false);
alert.getwindow().setType(WindowManager.LayoutParams.TYPE_SYstem_ALERT);
alert.show();
}
}
}
}
解决方法
排队
((Activity)mContext).finish();
mContext来自新的InitialRequestData(InitialRequestService.this).execute();
它是InitialRequestService,而不是Activity,所以你得到一个ClassCastExcetption.
您需要将Activity实例传递给Service.但我更喜欢在您的InitialRequestService中将broadcastReceiver发送到这样的Activity:
alert.setButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
alert.dismiss();
// modify here
LocalbroadcastManager localbroadcastManager = LocalbroadcastManager
.getInstance(InitialRequestService.this);
localbroadcastManager.sendbroadcast(new Intent(
"com.durga.action.close"));
}
});
在要关闭的活动中:
public class YourActivity extends Activity{
LocalbroadcastManager mLocalbroadcastManager;
broadcastReceiver mbroadcastReceiver = new broadcastReceiver() {
@Override
public void onReceive(Context context,Intent intent) {
if(intent.getAction().equals("com.durga.action.close")){
finish();
}
}
};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocalbroadcastManager = LocalbroadcastManager.getInstance(this);
IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction("com.durga.action.close");
mLocalbroadcastManager.registerReceiver(mbroadcastReceiver,mIntentFilter);
}
protected void onDestroy() {
super.onDestroy();
mLocalbroadcastManager.unregisterReceiver(mbroadcastReceiver);
}
}
希望能帮助到你.