第一次写android应用,第一次运行成功,第二次提示未知终止,拜托大家帮忙看看。

时间:2022-09-29 16:33:02
代码:

package com.studio.time;

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EncodingUtils;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.support.v4.app.NavUtils;
import android.view.View.OnClickListener;
import android.app.Activity;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EncodingUtils;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

@SuppressLint({ "ParserError", "ParserError", "ParserError", "ParserError", "ParserError", "ParserError", "ParserError", "ParserError" })
public class MainActivity extends Activity {

private String TAG = "chapter8_3";
    private Button btnEnd;
    private TextView labelTimer;
    private Thread clockThread;
    private Thread urlThread;
    private boolean isRunning = true;
    private Handler handler;
    private TextView tv;


    @SuppressLint({ "ParserError", "ParserError" })
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnEnd = (Button) findViewById(R.id.btnEnd);
        btnEnd.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                isRunning = false;
            }
        });
    
        handler = new Handler() {

            public void handleMessage(Message msg) {
                switch (msg.what) {
                case 0:
                    labelTimer.setText("you have been in this app " + msg.obj + " seconds");
                }
            }

        };

        labelTimer = (TextView) findViewById(R.id.labelTimer);
        tv = (TextView) findViewById(R.id.tv);
      
        /* 线程体是Clock对象本身,线程名字为"Clock" */
        clockThread = new Thread(new Runnable() {
            @SuppressLint("ParserError")
public void run() {
                int timer = 0;
                while (isRunning) {
                    try {
                        Thread.currentThread();
Thread.sleep(1000);
                        timer++;
                        /* labelTimer.setText("you have been in this app " + timer + " seconds"); */
                        Message msg = new Message();
                        msg.obj = timer;
                        msg.what = 0;
                        handler.sendMessage(msg);
                        Log.d(TAG, "lost  time " + timer);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                                      }
                }
            }
        });

        clockThread.start(); 
        urlThread = new Thread(new Runnable(){
         public void run() {
         String myString = null;
      
            try{
         URL myURL = new URL("http://www.baidu.com");
         URLConnection ucon = myURL.openConnection();
         InputStream is = ucon.getInputStream();
         BufferedInputStream bis = new BufferedInputStream(is);
         ByteArrayBuffer baf = new ByteArrayBuffer(50);
         int current = 0;
         while((current = bis.read())!= -1){
         baf.append((byte)current);
         }
         myString = EncodingUtils.getString(baf.toByteArray(),"UTF-8");
         }catch(Exception e){
         myString = e.getMessage();
         }
         tv.setText(myString);
         }
        });
        urlThread.start();
    
}}


上面是main_activity的代码。
提示是意外终止要强行停止。
可是我第一次明明运行成功了呀。。。。。
大家帮帮忙看看吧,我明天就得交作业了,我android才学了一个星期,其实都不懂的。上面的代码也是我硬写的。。。。

11 个解决方案

#1


发出错的详细Log信息上来

#2


是那个LogCat吗??

引用 1 楼  的回复:
发出错的详细Log信息上来

#3


是的啊

#4


不好意思电脑崩溃了。。我尽快。。。该死的联想

引用 1 楼  的回复:
发出错的详细Log信息上来

#5


是不是在非ui线程更新了ui  

#6



 myString = EncodingUtils.getString(baf.toByteArray(),"UTF-8");
  }catch(Exception e){
  myString = e.getMessage();
  }
  tv.setText(myString);
  }
  });
  urlThread.start();
   
}}

#7


有错吗????怎么改呀??拜托拜托。。

引用 6 楼  的回复:
Java code

 myString = EncodingUtils.getString(baf.toByteArray(),"UTF-8");
  }catch(Exception e){
  myString = e.getMessage();
  }
  tv.setText(myString);
  }
  });
  urlThread.start();
   
}}

#8


 tv.setText(myString);
这个只能在uithread中做,你搞一个handler发message过去,在handler中更新

#9


第一次写android应用,第一次运行成功,第二次提示未知终止,拜托大家帮忙看看。
this?

#10


要不您可以加我QQ帮帮忙吗??我也好发源代码给您看看。
我现在真心想砸了我的电脑。。真的好卡。
然后我也不知道CSDN的设计为什么这么不人性化。

可以的话,,,,麻烦加我280248066 。。。谢谢您!

引用 3 楼  的回复:
是的啊

#11


拜托您。
您怕打扰的话,可以随时把我拉黑的。我不会干涉你任何事情的。拜托了

引用 3 楼  的回复:
是的啊

#1


发出错的详细Log信息上来

#2


是那个LogCat吗??

引用 1 楼  的回复:
发出错的详细Log信息上来

#3


是的啊

#4


不好意思电脑崩溃了。。我尽快。。。该死的联想

引用 1 楼  的回复:
发出错的详细Log信息上来

#5


是不是在非ui线程更新了ui  

#6



 myString = EncodingUtils.getString(baf.toByteArray(),"UTF-8");
  }catch(Exception e){
  myString = e.getMessage();
  }
  tv.setText(myString);
  }
  });
  urlThread.start();
   
}}

#7


有错吗????怎么改呀??拜托拜托。。

引用 6 楼  的回复:
Java code

 myString = EncodingUtils.getString(baf.toByteArray(),"UTF-8");
  }catch(Exception e){
  myString = e.getMessage();
  }
  tv.setText(myString);
  }
  });
  urlThread.start();
   
}}

#8


 tv.setText(myString);
这个只能在uithread中做,你搞一个handler发message过去,在handler中更新

#9


第一次写android应用,第一次运行成功,第二次提示未知终止,拜托大家帮忙看看。
this?

#10


要不您可以加我QQ帮帮忙吗??我也好发源代码给您看看。
我现在真心想砸了我的电脑。。真的好卡。
然后我也不知道CSDN的设计为什么这么不人性化。

可以的话,,,,麻烦加我280248066 。。。谢谢您!

引用 3 楼  的回复:
是的啊

#11


拜托您。
您怕打扰的话,可以随时把我拉黑的。我不会干涉你任何事情的。拜托了

引用 3 楼  的回复:
是的啊