所以我在片段中有一个线程'ThreadDemo',它进行一些计算并使用 getActivity().runOnUiThread() 来更新 TextView。它工作正常,但是当我退出应用程序时,它会在 getActivity() 上提供 NPE。根据我对android中线程的了解,它们应该在 Activity 被销毁时停止,但在这里,由于某种原因,它会继续并且在我关闭它时无法找到它。这是我的片段中的线程代码-
public class ThreadDemo implements Runnable {
int hour, minute, second, day=0;
public void run() {
while((196-day)>=0) {
Calendar cal = Calendar.getInstance();
day = cal.get(Calendar.DAY_OF_YEAR);
hour = cal.get(Calendar.HOUR_OF_DAY);
minute = cal.get(Calendar.MINUTE);
second = cal.get(Calendar.SECOND);
try {
**NPE here** getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
....
}
});
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
这是LogCat-
06-07 12:05:28.903: E/AndroidRuntime(19834): FATAL EXCEPTION: Thread-5858
06-07 12:05:28.903: E/AndroidRuntime(19834): java.lang.NullPointerException
06-07 12:05:28.903: E/AndroidRuntime(19834): at com.example.mapsapiv2demo.Fragment3$ThreadDemo.run(Fragment3.java:59)
06-07 12:05:28.903: E/AndroidRuntime(19834): at java.lang.Thread.run(Thread.java:856)
注意:我尝试在 onPause 方法中手动停止线程,但似乎 stop() 方法已被线程弃用,不推荐使用。知道我做错了什么或任何解决方法的建议吗?我知道类似 asynctask 的东西,但我是初学者,所以我现在想避免这种情况。谢谢你的帮助。