【发布时间】:2012-12-18 15:22:14
【问题描述】:
我需要将我的 LoginMechanism 更改为 asynchTask,以便它不会在 SDK 4.x 中引发 android.os.NetworkOnMainThreadException。我不清楚如何在这个异步任务中开始一个新的意图。我了解工作将在 doInBackground-Method 中完成,并且此返回结果将在 onPostExecute 方法中处理。在这种方法中,我尝试启动新活动和服务,但它显示编译器错误
The constructor Intent(MainActivity.LoginTask, Class<AttachService>) is undefined
这里是 onPostExecute 方法
@Override
protected void onPostExecute(String result) {
super.onPostExecute( result );
if (result.equals("")){
loginError.setText(R.string.login_error);
loginError.setVisibility(View.VISIBLE);
}
else{
loginError.setVisibility(View.INVISIBLE);
startService(new Intent(LoginTask.this, AttachService.class));
Log.d(TAG, "setting status of user " + login.getText().toString() + " to stored for service endpoint " + service_endpoint_spinner.getSelectedItemId());
if (appData.getLoggedInUser() == null){
loggedInUser = DBManager.getInstance().storeUser(user,hashedPw,target, true);
appData.setLoggedInUser(loggedInUser);
DBManager.getInstance().setUserStatusToStored(loggedInUser);
}
startActivity(new Intent(this, ActionActivity.class));
}
}
所有的 startservice 和 startActivity 方法都会产生编译器错误,谁能解释一下原因。 谢谢
【问题讨论】:
-
您可能需要将上下文定义为AsynchTask stackoverflow.com/questions/9118015/…的局部变量