我有一个与网络服务一起使用的应用。
使用网络服务的行动可能需要几秒钟,当我在google中搜索一个处理这个概念的处理程序时,我看到我可以使用AsyncTask或新线程。
我解释了我的基本动作应用。 在MainActivity中,我有两个字段用户名和密码。 MainActivity从用户获取输入并将这些输入发送到ActionClass中的函数,并在那里使用WSClass。 在函数类中,我发送到Web服务并等待响应。
MainActivity:
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ActionClass = ActionClass.getInstans();
ActionClass.setContext(this);
ActionClass.login("username","password");// in the future in put a PlainText for username and password.
if(isLogin == true)
{
//here i move to another activity....
}
}
}
public class ActionClass
{
public void setContext(Context context) {
if (this.context == null) {
this.context = context;
WSClass = new WSClass();
}
}
public static ActionClass getInstans() {
if (instans == null) {
synchronized (ActionClass.class) {
if (instans == null)
instans = new ActionClass();
}
}
return instans;
}
public boolean login(String username, String password) {
{
WSClass.loginWs(url,username, password, object.class);
}
}
public class WSClass
{
public <T> T login(String URL,String username,String password,
Class<T> output)
{
//...Do Something...
}
}
更新qustion
WsClass使用泛型函数来获取并返回<T>
变量。
我检查了AsyncTask后... AsyncTask可以作为通用使用,如果不能解决这个问题?
上面更新了WSClass中的函数。
谢谢,
塔尔
答案 0 :(得分:0)
在我看来,使用异步任务更好。
从Handler和Thread创建异步任务以处理异步目的。 对于处理某些执行时间很短(几秒钟)且具有后台工作的任务始终使用异步任务。异步任务像单个线程一样执行而不解释UI线程。
AsyncTask可以正确,轻松地使用UI线程。此类允许您执行后台操作并在UI线程上发布结果,而无需操作线程和/或处理程序。
答案 1 :(得分:0)
如果您只是做简单的任务(在您的示例中,它是登录),您最好选择AsyncTask,但如果您想要做更多工作,并且这些工作是相对的,或者任务需要经常重启,那么最好选择线程