Android 如果条件在调试器中执行两个块
这可能有些愚蠢,但我有一个活动类从非活动类中调用一个方法。当我在Eclipse调试器中逐步执行此操作时,返回true和返回false都会在计算netinfo对象的if条件下执行,并且isOnline方法返回false,即使netinfo.isConnected()的计算结果为true且不为null。当我在调用类的if条件中得到值时,在调试器中检查时,我得到“JDI线程评估遇到了一个问题”。它的计算结果为true,因此我得到了成功消息。为什么我会看到这种行为?如何正确评估断开连接方法的结果Android 如果条件在调试器中执行两个块,android,Android,这可能有些愚蠢,但我有一个活动类从非活动类中调用一个方法。当我在Eclipse调试器中逐步执行此操作时,返回true和返回false都会在计算netinfo对象的if条件下执行,并且isOnline方法返回false,即使netinfo.isConnected()的计算结果为true且不为null。当我在调用类的if条件中得到值时,在调试器中检查时,我得到“JDI线程评估遇到了一个问题”。它的计算结果为true,因此我得到了成功消息。为什么我会看到这种行为?如何正确评估断开连接方法的结果 Cal
Calling Main Activity Class:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class Splash extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Connection.context = this;
// Check Internet Connection
if (!Connection.isOnline())
{
//throw some message
Log.d("Test","Fail!");
}
else
{
//state something good.
Log.d("Test","Success!");
}
Called Non Activity Class
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class Connection {
public static Context context;
// Check Internet Connection
public static boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected())
{return true;}
else
{return false;}
}
}有时,在调试时,我也会看到当前指令的奇怪行为转到奇怪的返回位置。
因此,我认为了解
isOnline
函数返回值的最佳方法是记录结果本身;差不多
boolean online = netInfo != null && netInfo.isConnected();
Log.d("test", "online returning " + online);
return online;
“返回true和返回false在if条件下执行”-非常不寻常…哈哈,这怎么可能:D.我在这里没有看到输入错误或其他东西。也许可以在那里尝试三元操作。不知道为什么两条路都会被击中,我只是试了一下。在我的手机上一切都很好。它没有任何错误或类似的事情发生。可能会清理并重建项目。有点像@Spidy建议的那样-为什么不直接使用
return((netInfo!=null)&&(netInfo.isConnected())代码>