【问题标题】:How to correctly use parameters passed to an android thread?如何正确使用传递给android线程的参数?
【发布时间】:2012-09-24 21:38:27
【问题描述】:

我有一个外部 .hash 文件,我厌倦了将其作为简单的远程文本文件阅读:

private class getHash extends AsyncTask<String, Void, String>{
    @Override
    protected String doInBackground(String... params) {
        String str = null;
        try {
            // Create a URL for the desired page
            URL url = new URL(params[0]);

            // Read all the text returned by the server
            InputStream is =  url.openStream();//The line it crashes on
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader in = new BufferedReader(isr);
            str = in.readLine();
            in.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
    @Override
    protected void onPostExecute(String result) {
        hash = result;
    }
}

然后我调用线程:

getHash hashThread =  new getHash();
hashThread.execute(new String[]{"http://www......................hash"});

在执行课程中提到的行期间,所有停止都被拉动,我被优雅的Source not found 崩溃扇了耳光。

LogCat 给出这个错误:

W/dalvikvm(724): threadid=1: thread exiting with uncaught exception (group=0x40a13300)

【问题讨论】:

  • 请发布 logcat 错误输出。

标签: java android multithreading android-asynctask inputstream


【解决方案1】:

您是在调试模式还是常规模式下运行它? source not found 消息似乎表明您正在尝试进入没有附加源代码的代码。

你也添加了 &lt;uses-permission android:name="android.permission.INTERNET" /&gt; 给你的AndroidManifest.xml

【讨论】:

  • 感谢您的回复,但我确实添加了必要的权限。
  • 第一部分呢?您是在调试模式还是常规模式下运行?
  • 运行 Android 应用程序有两种不同的方式(至少假设您使用的是 Eclipse)。第一个是常规/发布,顶部栏上有一个绿色的播放箭头,或者您可以右键单击您的项目并单击运行方式 - > Android 应用程序。另一个是调试,顶部栏上有一个紫色的小错误符号。如果您在调试模式下运行,它将尝试单步执行代码,并且如果未附加 Android 源代码(如果您仅安装了 SDK,则不会附加),那么您将收到 Source not found 错误跨度>
  • IDE 的排列方式没有任何意义。所以我是双向的。
猜你喜欢
  • 2015-03-08
  • 2010-10-26
  • 1970-01-01
  • 2016-01-08
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多