【问题标题】:Application crashing without internet应用程序在没有互联网的情况下崩溃
【发布时间】:2013-04-04 11:24:18
【问题描述】:

在这里,基本上我所做的就是检查连接是否可用。如果连接不可用,我将重定向到另一个活动。就是这样。但它一直在崩溃。

Intent i;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
     i = new Intent(Jsouptesting3Activity.this, NoInternet.class);
    Jsouptesting3Activity ob1=new Jsouptesting3Activity();
    ob1.isDataConnectionAvailable(this);
    try {
        doc = Jsoup.connect("http://www.way2franchise.com/").get();

        //System.out.println(doc);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        System.out.println("cant connect");
        e.printStackTrace();


public  void isDataConnectionAvailable(Context context){
    ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = connectivityManager.getActiveNetworkInfo();
    if(info == null)
    {
        System.out.println("No net bob");
         i = new Intent(Jsouptesting3Activity.this, NoInternet.class);
        startActivity(i);

    }
    System.out.println("YES net bob");

当程序执行时,我正在调用 isDataConnectionAvailable(),但我没有可用的连接。所以根据逻辑,它必须被重定向并且 NoInternet 活动应该打开。
我错过了什么严重的事情吗?
请帮助.

logcat 堆栈

Thread [<1> main] (Suspended (exception RuntimeException))  
ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1659    
ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1675 
ActivityThread.access$1500(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 121   
ActivityThread$H.handleMessage(Message) line: 943   
ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 130 
ActivityThread.main(String[]) line: 3701    
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 507  
ZygoteInit$MethodAndArgsCaller.run() line: 866  
ZygoteInit.main(String[]) line: 624 
NativeStart.main(String[]) line: not available [native method]  

【问题讨论】:

  • 您的逻辑不正确...首先您不检查isDataConnectionAvailable() 返回的内容...其次,如果info 为空,则您不返回false,因此仍然调用Jsoup.connect(...) .. .
  • 我什至不知道从哪里开始,真的。这段代码有很多错误...我该如何解释...
  • 1) 手动创建活动实例 (ob1):不! 2) 将this 作为上下文传递给继承Context 的Activity 方法:不! 3)认为startActivity()有立竿见影的效果:错!
  • @ClassStacker 允许手动创建活动实例。 2)为什么不呢?请详细说明。
  • 没什么好说的...这是关于Android平台的基础知识...像Service,Activity这样的应用程序组件不应该由new创建,而是使用组件特定的方法,如startActivity , startService ...

标签: android android-internet


【解决方案1】:

检查 isDataConnectionAvailable() 作为构造 if (isDataConnectionAvailable())

 Jsouptesting3Activity ob1=new Jsouptesting3Activity();
   if( ob1.isDataConnectionAvailable(this))
{
    try {
        doc = Jsoup.connect("http://www.way2franchise.com/").get();

        //System.out.println(doc);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        System.out.println("JSON Error");
        e.printStackTrace();
}
else
{
    System.out.println("cant connect");
}

【讨论】:

    【解决方案2】:

    你应该检查 isDataConnectionAvailable() 作为构造 if (isDataConnectionAvailable())

    我认为最好的方法是不检查连接,而是检查doc,如果等于null,则打开另一个活动

    【讨论】:

      【解决方案3】:

      您必须从if 条件调用该方法,这样它就不会执行

      if(ob1.isDataConnectionAvailable(this))
      {
          try {
              doc = Jsoup.connect("http://www.way2franchise.com/").get();
      
              //System.out.println(doc);
          } catch (IOException e) {
              // TODO Auto-generated catch block
              System.out.println("cant connect");
              e.printStackTrace();
      }
      

      并从isDataConnectionAvailable(this)返回值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-10
        • 1970-01-01
        • 2016-11-30
        • 2016-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多