我正在开发一款基于位置的应用,可以检测用户的位置,并根据网站上的位置提取数据。 我能够创建一个应用程序来成功获得用户位置,我甚至可以创建一个应用程序来拉动&使用Jsoup解析HTML数据。现在我尝试将两者结合起来,但应用程序崩溃了。
我从其他帖子中读到,为HTTP请求创建新线程将解决问题,但我无法理解在程序中创建它的位置并启动线程。
我尝试在onCreate函数中创建一个线程并在LocationListener中启动它,但仍然似乎不起作用。
的onCreate
Runnable runnable = new Runnable() {
@Override
public void run() {
Document doc;
try {
doc = Jsoup.connect("http://google.com/").get();
String title = doc.title();
tv.setText(title);
}
catch (IOException e)
{
e.printStackTrace();
}
}
};
LocationListener的
Thread mythread = new Thread(runnable);
mythread.start();
以下是我的代码的结构
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// some content
}
public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc)
{
try {
// block of code to get user location
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我想将这个可运行的线程保存在一个单独的函数中,这样只有在位置发生变化时才会调用它。
我能为此得到一些帮助吗? 提前致谢
更新 - Logcat
06-17 17:05:37.027: I/dalvikvm(14034): Could not find method org.jsoup.Jsoup.connect, referenced from method com.example.loc_update.MainActivity$1.run
06-17 17:05:37.027: W/dalvikvm(14034): VFY: unable to resolve static method 8726: Lorg/jsoup/Jsoup;.connect (Ljava/lang/String;)Lorg/jsoup/Connection;
06-17 17:05:37.027: D/dalvikvm(14034): VFY: replacing opcode 0x71 at 0x0002
06-17 17:05:37.062: W/dalvikvm(14034): threadid=11: thread exiting with uncaught exception (group=0x419002a0)
06-17 17:05:37.062: E/AndroidRuntime(14034): FATAL EXCEPTION: Thread-11600
06-17 17:05:37.062: E/AndroidRuntime(14034): java.lang.NoClassDefFoundError: org.jsoup.Jsoup
06-17 17:05:37.062: E/AndroidRuntime(14034): at com.example.loc_update.MainActivity$1.run(MainActivity.java:112)
06-17 17:05:37.062: E/AndroidRuntime(14034): at java.lang.Thread.run(Thread.java:856)
06-17 17:05:37.282: D/libEGL(14034): loaded /system/lib/egl/libEGL_mali.so
06-17 17:05:37.307: D/libEGL(14034): loaded /system/lib/egl/libGLESv1_CM_mali.so
06-17 17:05:37.312: D/libEGL(14034): loaded /system/lib/egl/libGLESv2_mali.so
06-17 17:05:37.312: D/(14034): Device driver API match
06-17 17:05:37.312: D/(14034): Device driver API version: 10
06-17 17:05:37.312: D/(14034): User space API version: 10
06-17 17:05:37.312: D/(14034): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST 2012
06-17 17:05:37.372: D/OpenGLRenderer(14034): Enabling debug mode 0
06-17 17:05:46.847: I/Choreographer(14034): Skipped 566 frames! The application may be doing too much work on its main thread.
06-17 17:05:48.527: I/Process(14034): Sending signal. PID: 14034 SIG: 9