报错的Logcat The application may be doing too much work on its main threa

Nelson.Feng 2013-12-16 03:12:04
Skipped 65 frames! The application may be doing too much work on its main thread.

package com.apptest20;

import com.entity.InputEntity;
import com.entity.SocketHandle;
import com.entity.UserOutputEntity;

import android.R.string;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Activity_Login extends Activity {
// 用户的账号
private AutoCompleteTextView userAccount;
// 用户密码
private EditText userPwd;
// 登陆按钮、取回密码按钮、注册登录按钮
private Button btnLogining, login_as_tourists, btnToRegister;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//初始化界面控件
initView();
//添加监听响应事件
addListener();
}

/**
* 初始化所有控件
*/
private void initView() {

userAccount = (AutoCompleteTextView) findViewById(R.id.login_account);
userPwd = (EditText) findViewById(R.id.login_pwd);
btnLogining = (Button) findViewById(R.id.login_btn_logining);
login_as_tourists = (Button) findViewById(R.id.login_as_tourists);
btnToRegister = (Button) findViewById(R.id.login_btn_to_register);
}

private void addListener() {
//监听游客按钮
login_as_tourists.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setClass(Activity_Login.this,ActivityBIL.class);
startActivity(intent);
finish();
}
});

//添加登陆按钮监听事件
btnLogining.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//获取用户输入的账号
int account = Integer
.parseInt(userAccount.getText().toString());
//获取用户输入的密码
String password = userPwd.getText().toString();
//调用登录方法
login(account, password);
}
});

btnToRegister.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setClass(Activity_Login.this,ActivitySignUp.class);
startActivity(intent);
finish();
}
});
}
/**
* 登录方法
* 该方法用于将用户输入的账号和密码发送到服务端,并对服务端返回的数据进行处理
* @param account 账号
* @param password 密码
*/
protected void login(int account, String password) {
boolean b = false;
//创建一个用户,用于向服务端发送数据时,存放的实体
UserOutputEntity user = new UserOutputEntity();
SocketHandle userlogin = new SocketHandle();
user = userlogin.loginHandle(account, password);
//调用服务方法,向服务端发送数据,如果服务端返回true表示登陆成功,false表示登录失败
if (user != null) {
b = true;
}
if (b) {//如果登陆成功
try {

} catch (Exception e) {
e.printStackTrace();
}
Intent intent = new Intent(this, ActivityMore.class);
//new一个Bundle对象,并将要传递的数据传入
Bundle bundle = new Bundle();
bundle.putInt("account", account);
bundle.putString("password", password);
//将bundle对象assign给Intent
intent.putExtras(bundle);
//开启跳转
startActivity(intent);
} else {//登录失败,通过Toast向用户提示登录失败
//Toast.makeText(this, "登录失败,不告诉你为什么...", Toast.LENGTH_LONG).show();
}
}
}

...全文
23608 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
依然绿茶 2013-12-17
  • 打赏
  • 举报
回复
12-16 22:22:33.745: E/AndroidRuntime(1708): java.lang.NumberFormatException: Invalid int: "tttuuyyyhg" 只能输入数字,不能输入字母
Nelson.Feng 2013-12-17
  • 打赏
  • 举报
回复
引用 5 楼 ncepu307 的回复:
[quote=引用 4 楼 u012861744 的回复:] [quote=引用 1 楼 ncepu307 的回复:] 楼主都没贴出log报错的打印啊?? 猜测应该是点击登录按钮报错的吧? 把这个login函数放到线程中执行。
//添加登陆按钮监听事件
        btnLogining.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取用户输入的账号
                final int account = Integer
                        .parseInt(userAccount.getText().toString());
                //获取用户输入的密码
                final String password = userPwd.getText().toString();
                //调用登录方法
                new Thread() {
                    public void run() {
                        login(account, password);
                    }
                }.start();
                
            }
        });
12-16 09:59:16.092: D/dalvikvm(1099): GC_FOR_ALLOC freed 35K, 4% free 2808K/2912K, paused 40ms, total 41ms
12-16 09:59:16.162: I/dalvikvm-heap(1099): Grow heap (frag case) to 8.298MB for 5760016-byte allocation
12-16 09:59:16.202: D/dalvikvm(1099): GC_FOR_ALLOC freed <1K, 2% free 8433K/8540K, paused 38ms, total 38ms
12-16 09:59:16.942: D/gralloc_goldfish(1099): Emulator without GPU emulation detected.
12-16 09:59:19.142: D/dalvikvm(1099): GC_FOR_ALLOC freed 5K, 1% free 8457K/8540K, paused 111ms, total 145ms
12-16 09:59:19.322: I/dalvikvm-heap(1099): Grow heap (frag case) to 11.642MB for 3481616-byte allocation
12-16 09:59:19.442: D/dalvikvm(1099): GC_FOR_ALLOC freed <1K, 1% free 11857K/11944K, paused 116ms, total 116ms
12-16 09:59:22.122: I/Choreographer(1099): Skipped 32 frames!  The application may be doing too much work on its main thread.
12-16 09:59:25.552: I/Choreographer(1099): Skipped 48 frames!  The application may be doing too much work on its main thread.
12-16 09:59:27.712: D/AndroidRuntime(1099): Shutting down VM
12-16 09:59:27.712: W/dalvikvm(1099): threadid=1: thread exiting with uncaught exception (group=0xb3ac1b90)
12-16 09:59:27.752: E/AndroidRuntime(1099): FATAL EXCEPTION: main
12-16 09:59:27.752: E/AndroidRuntime(1099): Process: com.PicGenie, PID: 1099
12-16 09:59:27.752: E/AndroidRuntime(1099): java.lang.NumberFormatException: Invalid int: ""
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.Integer.invalidInt(Integer.java:137)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.Integer.parseInt(Integer.java:358)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.Integer.parseInt(Integer.java:331)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at com.PicGenie.Activity_Login$2.onClick(Activity_Login.java:72)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.view.View.performClick(View.java:4424)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.view.View$PerformClick.run(View.java:18383)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.os.Handler.handleCallback(Handler.java:733)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.os.Handler.dispatchMessage(Handler.java:95)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.os.Looper.loop(Looper.java:137)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.app.ActivityThread.main(ActivityThread.java:4998)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.reflect.Method.invokeNative(Native Method)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.reflect.Method.invoke(Method.java:515)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at dalvik.system.NativeStart.main(Native Method)
12-16 09:59:30.942: I/Process(1099): Sending signal. PID: 1099 SIG: 9
[/quote] 对,没错,就是login花费太长的时间,代码上面都给你写好了,用多线程。 还有就是:int account = Integer .parseInt(userAccount.getText().toString()); 这个地方,userAccount这个控件先判断下,不能输入为空,否则就是会报NumberFormatException这个错[/quote]
12-16 22:21:54.405: D/dalvikvm(1708): GC_FOR_ALLOC freed 54K, 5% free 2808K/2940K, paused 187ms, total 190ms
12-16 22:21:54.475: I/dalvikvm-heap(1708): Grow heap (frag case) to 8.306MB for 5760016-byte allocation
12-16 22:21:54.555: D/dalvikvm(1708): GC_FOR_ALLOC freed <1K, 2% free 8433K/8568K, paused 73ms, total 73ms
12-16 22:21:55.265: D/gralloc_goldfish(1708): Emulator without GPU emulation detected.
12-16 22:21:57.225: D/dalvikvm(1708): GC_FOR_ALLOC freed 5K, 2% free 8458K/8568K, paused 55ms, total 57ms
12-16 22:21:57.345: I/dalvikvm-heap(1708): Grow heap (frag case) to 11.651MB for 3481616-byte allocation
12-16 22:21:57.505: D/dalvikvm(1708): GC_FOR_ALLOC freed <1K, 1% free 11857K/11972K, paused 152ms, total 152ms
12-16 22:22:00.625: I/Choreographer(1708): Skipped 185 frames!  The application may be doing too much work on its main thread.
12-16 22:22:03.155: I/Choreographer(1708): Skipped 38 frames!  The application may be doing too much work on its main thread.
12-16 22:22:28.185: I/Choreographer(1708): Skipped 35 frames!  The application may be doing too much work on its main thread.
12-16 22:22:28.975: I/Choreographer(1708): Skipped 44 frames!  The application may be doing too much work on its main thread.
12-16 22:22:31.615: I/Choreographer(1708): Skipped 30 frames!  The application may be doing too much work on its main thread.
12-16 22:22:33.725: D/AndroidRuntime(1708): Shutting down VM
12-16 22:22:33.725: W/dalvikvm(1708): threadid=1: thread exiting with uncaught exception (group=0xb3a79b90)
12-16 22:22:33.745: E/AndroidRuntime(1708): FATAL EXCEPTION: main
12-16 22:22:33.745: E/AndroidRuntime(1708): Process: com.PicGenie, PID: 1708
12-16 22:22:33.745: E/AndroidRuntime(1708): java.lang.NumberFormatException: Invalid int: "tttuuyyyhg"
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at java.lang.Integer.invalidInt(Integer.java:137)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at java.lang.Integer.parse(Integer.java:374)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at java.lang.Integer.parseInt(Integer.java:365)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at java.lang.Integer.parseInt(Integer.java:331)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at com.PicGenie.Activity_Login$2.onClick(Activity_Login.java:75)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at android.view.View.performClick(View.java:4424)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at android.view.View$PerformClick.run(View.java:18383)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at android.os.Handler.handleCallback(Handler.java:733)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at android.os.Handler.dispatchMessage(Handler.java:95)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at android.os.Looper.loop(Looper.java:137)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at android.app.ActivityThread.main(ActivityThread.java:4998)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at java.lang.reflect.Method.invokeNative(Native Method)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at java.lang.reflect.Method.invoke(Method.java:515)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-16 22:22:33.745: E/AndroidRuntime(1708): 	at dalvik.system.NativeStart.main(Native Method)
12-16 22:22:39.115: I/Process(1708): Sending signal. PID: 1708 SIG: 9
coder_cp 2013-12-17
  • 打赏
  • 举报
回复
引用 2 楼 tanwei4199 的回复:
妥妥的主线程不要执行联网 数据库查询 大文件读写等
主线程是有时间限制的(5S),如果超过这个时间,就会出现程序无反应。为了避免这种情况,在耗时的一些操作,如何网络进行的数据交互等,另外开辟一个线程来处理。就是楼下代码所说的。
依然绿茶 2013-12-17
  • 打赏
  • 举报
回复
引用 4 楼 u012861744 的回复:
[quote=引用 1 楼 ncepu307 的回复:] 楼主都没贴出log报错的打印啊?? 猜测应该是点击登录按钮报错的吧? 把这个login函数放到线程中执行。
//添加登陆按钮监听事件
        btnLogining.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取用户输入的账号
                final int account = Integer
                        .parseInt(userAccount.getText().toString());
                //获取用户输入的密码
                final String password = userPwd.getText().toString();
                //调用登录方法
                new Thread() {
                    public void run() {
                        login(account, password);
                    }
                }.start();
                
            }
        });
12-16 09:59:16.092: D/dalvikvm(1099): GC_FOR_ALLOC freed 35K, 4% free 2808K/2912K, paused 40ms, total 41ms
12-16 09:59:16.162: I/dalvikvm-heap(1099): Grow heap (frag case) to 8.298MB for 5760016-byte allocation
12-16 09:59:16.202: D/dalvikvm(1099): GC_FOR_ALLOC freed <1K, 2% free 8433K/8540K, paused 38ms, total 38ms
12-16 09:59:16.942: D/gralloc_goldfish(1099): Emulator without GPU emulation detected.
12-16 09:59:19.142: D/dalvikvm(1099): GC_FOR_ALLOC freed 5K, 1% free 8457K/8540K, paused 111ms, total 145ms
12-16 09:59:19.322: I/dalvikvm-heap(1099): Grow heap (frag case) to 11.642MB for 3481616-byte allocation
12-16 09:59:19.442: D/dalvikvm(1099): GC_FOR_ALLOC freed <1K, 1% free 11857K/11944K, paused 116ms, total 116ms
12-16 09:59:22.122: I/Choreographer(1099): Skipped 32 frames!  The application may be doing too much work on its main thread.
12-16 09:59:25.552: I/Choreographer(1099): Skipped 48 frames!  The application may be doing too much work on its main thread.
12-16 09:59:27.712: D/AndroidRuntime(1099): Shutting down VM
12-16 09:59:27.712: W/dalvikvm(1099): threadid=1: thread exiting with uncaught exception (group=0xb3ac1b90)
12-16 09:59:27.752: E/AndroidRuntime(1099): FATAL EXCEPTION: main
12-16 09:59:27.752: E/AndroidRuntime(1099): Process: com.PicGenie, PID: 1099
12-16 09:59:27.752: E/AndroidRuntime(1099): java.lang.NumberFormatException: Invalid int: ""
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.Integer.invalidInt(Integer.java:137)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.Integer.parseInt(Integer.java:358)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.Integer.parseInt(Integer.java:331)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at com.PicGenie.Activity_Login$2.onClick(Activity_Login.java:72)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.view.View.performClick(View.java:4424)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.view.View$PerformClick.run(View.java:18383)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.os.Handler.handleCallback(Handler.java:733)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.os.Handler.dispatchMessage(Handler.java:95)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.os.Looper.loop(Looper.java:137)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.app.ActivityThread.main(ActivityThread.java:4998)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.reflect.Method.invokeNative(Native Method)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.reflect.Method.invoke(Method.java:515)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at dalvik.system.NativeStart.main(Native Method)
12-16 09:59:30.942: I/Process(1099): Sending signal. PID: 1099 SIG: 9
[/quote] 对,没错,就是login花费太长的时间,代码上面都给你写好了,用多线程。 还有就是:int account = Integer .parseInt(userAccount.getText().toString()); 这个地方,userAccount这个控件先判断下,不能输入为空,否则就是会报NumberFormatException这个错
Nelson.Feng 2013-12-16
  • 打赏
  • 举报
回复
引用 1 楼 ncepu307 的回复:
楼主都没贴出log报错的打印啊?? 猜测应该是点击登录按钮报错的吧? 把这个login函数放到线程中执行。
//添加登陆按钮监听事件
        btnLogining.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取用户输入的账号
                final int account = Integer
                        .parseInt(userAccount.getText().toString());
                //获取用户输入的密码
                final String password = userPwd.getText().toString();
                //调用登录方法
                new Thread() {
                    public void run() {
                        login(account, password);
                    }
                }.start();
                
            }
        });
12-16 09:59:16.092: D/dalvikvm(1099): GC_FOR_ALLOC freed 35K, 4% free 2808K/2912K, paused 40ms, total 41ms
12-16 09:59:16.162: I/dalvikvm-heap(1099): Grow heap (frag case) to 8.298MB for 5760016-byte allocation
12-16 09:59:16.202: D/dalvikvm(1099): GC_FOR_ALLOC freed <1K, 2% free 8433K/8540K, paused 38ms, total 38ms
12-16 09:59:16.942: D/gralloc_goldfish(1099): Emulator without GPU emulation detected.
12-16 09:59:19.142: D/dalvikvm(1099): GC_FOR_ALLOC freed 5K, 1% free 8457K/8540K, paused 111ms, total 145ms
12-16 09:59:19.322: I/dalvikvm-heap(1099): Grow heap (frag case) to 11.642MB for 3481616-byte allocation
12-16 09:59:19.442: D/dalvikvm(1099): GC_FOR_ALLOC freed <1K, 1% free 11857K/11944K, paused 116ms, total 116ms
12-16 09:59:22.122: I/Choreographer(1099): Skipped 32 frames!  The application may be doing too much work on its main thread.
12-16 09:59:25.552: I/Choreographer(1099): Skipped 48 frames!  The application may be doing too much work on its main thread.
12-16 09:59:27.712: D/AndroidRuntime(1099): Shutting down VM
12-16 09:59:27.712: W/dalvikvm(1099): threadid=1: thread exiting with uncaught exception (group=0xb3ac1b90)
12-16 09:59:27.752: E/AndroidRuntime(1099): FATAL EXCEPTION: main
12-16 09:59:27.752: E/AndroidRuntime(1099): Process: com.PicGenie, PID: 1099
12-16 09:59:27.752: E/AndroidRuntime(1099): java.lang.NumberFormatException: Invalid int: ""
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.Integer.invalidInt(Integer.java:137)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.Integer.parseInt(Integer.java:358)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.Integer.parseInt(Integer.java:331)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at com.PicGenie.Activity_Login$2.onClick(Activity_Login.java:72)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.view.View.performClick(View.java:4424)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.view.View$PerformClick.run(View.java:18383)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.os.Handler.handleCallback(Handler.java:733)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.os.Handler.dispatchMessage(Handler.java:95)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.os.Looper.loop(Looper.java:137)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at android.app.ActivityThread.main(ActivityThread.java:4998)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.reflect.Method.invokeNative(Native Method)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at java.lang.reflect.Method.invoke(Method.java:515)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-16 09:59:27.752: E/AndroidRuntime(1099): 	at dalvik.system.NativeStart.main(Native Method)
12-16 09:59:30.942: I/Process(1099): Sending signal. PID: 1099 SIG: 9
Nelson.Feng 2013-12-16
  • 打赏
  • 举报
回复
引用 2 楼 tanwei4199 的回复:
妥妥的主线程不要执行联网 数据库查询 大文件读写等
请问是什么意思呀。。。怎么解决的说。。。
荒颜 2013-12-16
  • 打赏
  • 举报
回复
妥妥的主线程不要执行联网 数据库查询 大文件读写等
依然绿茶 2013-12-16
  • 打赏
  • 举报
回复
楼主都没贴出log报错的打印啊?? 猜测应该是点击登录按钮报错的吧? 把这个login函数放到线程中执行。
//添加登陆按钮监听事件
        btnLogining.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取用户输入的账号
                final int account = Integer
                        .parseInt(userAccount.getText().toString());
                //获取用户输入的密码
                final String password = userPwd.getText().toString();
                //调用登录方法
                new Thread() {
                    public void run() {
                        login(account, password);
                    }
                }.start();
                
            }
        });

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧