android.os.NetworkOnMainThreadException 和 java.lang.nullpointerexception

来源:互联网 发布:java 读取usb接口数据 编辑:程序博客网 时间:2024/05/18 12:40

异常提示:

(1)android.os.NetworkOnMainThreadException 

......

(2)java.lang.nullpointerexception

......

分析:

    (1)网络任务在主线程运行抛出异常。主要原因是Android2.3以上(不包含2.3)版本中,网络任务不能运行在主线程,需要建立新的线程来运行网络任务。

    (2)空指针异常。在本人Mp3Player工程中,是由于下载任务未完成而导致对象为空,因而产生该异常。

解决方法:

    (1)建立新的线程,在新的线程中执行网络任务。

             class DownloadThread implements Runnable{
     

       public DownloadThread(Mp3Info mp3Info){

                          .......

       }
      @Override
      public void run() {
   ......

       }

              }

               DownloadThread downloadThread = new DownloadThread(mp3Info);
    //启动新线程
    Thread thread = new Thread(downloadThread);
     thread.start();

    (2)修改Android版本

             1)选择工程右键properties--->Android,在右栏的Target Name下选择2.2或其他小于等于2.3的版本---> Appiy --->OK。

             2)打开Manifest.xml文件,修改对应的 android:minSdkVersion  与 android:targetSdkVersion  的值,使其与所选版本对应。如:

                   Android2.2为:   android:minSdkVersion="8"
                                                  android:targetSdkVersion="8"

             3)选择菜单Project--->Clean(确保Build Automatically已经勾选),重新生成R文件。

             4)删除res--->values-v11和values-v14。

             5)删除res--->menu--->project.xml中的  android:showAsAction="never"。

提醒:

        在Clean后,R文件没有自动生成,Build Automatically已经勾选,但还是没有生成,右键工程properties--->Android,在Target Name下先选择Android4.3或其他原有版本,选择Apply,然后再选择Android2.2或其他小于2.3的版本即可。

0 0
原创粉丝点击