在android主线程中正确运行代码

时间:2013-10-22 19:52:22

标签: android

所以开始编写Android应用程序,主要是开源和教程来学习语言。

我现在遇到一个问题,如果用户已登录过一次,他就不必再次登录了。我在这里阅读了很多答案之后使用了SharedPref,但应用程序正在跳帧...

继承我的代码。

SharedPreferences prefs = getPreferences(Login.this);
prefs = PreferenceManager.getDefaultSharedPreferences(Login.this);
String remUsername = prefs.getString("username", null);
String remPassword = prefs.getString("password", null);

if (remUsername != null && remPassword != null)
{
    String result = null;

    try {
        result = imService.authenticateUser(
        remUsername.toString(),
        remPassword.toString());
    } catch (UnsupportedEncodingException e) {
        //TODO Auto-generated catch block
        e.printStackTrace();
    }

    Intent i = new Intent(Login.this, FriendList.class);
    startActivity(i);
    Login.this.finish();
}

1 个答案:

答案 0 :(得分:0)

跳帧可能是由主线程执行的资源密集型操作(例如HTTP请求)引起的。您必须在单独的线程中执行此类操作,同时仅为主线程留下UI和非密集型操作(这就是为什么它被称为" UI"线程)。

阅读基础知识here。然后,您可以使用AsyncTask来实现它。但是为简单起见,建议使用专门的库,例如Volleyandroid-async-http