2013-03-05 70 views
2

我发送的登录请求,Web服务,我已经启用严格模式并获得以下错误怎么知道违反严格模式

03-05 16:54:36.490: E/AndroidRuntime(1106): FATAL EXCEPTION: main 
03-05 16:54:36.490: E/AndroidRuntime(1106): android.os.StrictMode$StrictModeViolation:  policy=95 violation=2 
03-05 16:54:36.490: E/AndroidRuntime(1106):  at android.os.StrictMode.executeDeathPenalty(StrictMode.java:1311) 
03-05 16:54:36.490: E/AndroidRuntime(1106):  at android.os.StrictMode.access$1300(StrictMode.java:112) 
03-05 16:54:36.490: E/AndroidRuntime(1106):  at android.os.StrictMode$AndroidBlockGuardPolicy.handleViolation(StrictMode.java:1304) 
03-05 16:54:36.490: E/AndroidRuntime(1106):  at android.os.StrictMode$AndroidBlockGuardPolicy$1.run(StrictMode.java:1191) 
03-05 16:54:36.490: E/AndroidRuntime(1106):  at andro 

如何得到什么在这里侵犯。

public class LoginActivity extends Activity implements ILoginDelegate { 

// Values for email and password at the time of the login attempt. 
private String mEmail; 
private String mPassword; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 

      StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 
      .detectAll().penaltyLog().penaltyDeath().build()); 

    //    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll() 
    //      .penaltyLog().penaltyDeath().build()); 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_login); 

    findViewById(R.id.sign_in_button).setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        attemptLogin(); 
       } 

      }); 
} 

public void attemptLogin() { 

     // Send login requesmEmail 
     try { 
      LoginManager manager = new LoginManager(this); 
      manager.sendLoginRequest(mEmail, mPassword); 
     } catch(Exception e) { 
       e.printStackTrace(); 

     }  

    } 

这是更新代码。请建议我在哪里做错了

感谢

+0

的崩溃可能导致如果在您的Web登录运行ui线程。调试器是另一种选择。 – staaar 2013-03-05 11:57:39

+0

您可以添加源代码如何添加Strictmode? – Yury 2013-03-05 12:16:49

+0

我附上了我的源代码 – 2013-03-05 12:22:09

回答

4

保持磁盘和网络操作关闭主线程进行了更平滑,反应更迅速的应用。

源:Android developers link

网络运行不应该在UI thread.Recommended进行使用的AsyncTask /运行thread.This将解决你的问题

+0

StrictMode是一款开发者工具,可以检测出您可能会意外做的事情,并将它们引起您的注意,让您可以修复它们。这只是一个帮助开发人员的工具。一般不要使用严格模式。 – Meher 2013-03-05 12:27:49

+0

使用AsyncTask /运行一个线程来执行网络操作。这将解决您的问题 – Meher 2013-03-05 12:31:29

+0

感谢您的评论。但我使用严格的模式因为我的应用程序变得太慢了。所以要知道wat使得它太慢我应用 – 2013-03-05 12:31:56