Android第二线程错误

时间:2014-07-08 22:15:39

标签: android eclipse multithreading exception

当我第一次打开活动时,一切都很好。当我回去,并重新打开活动我的应用程序崩溃。

这是我的错误日志:

07-09 00:11:47.530: E/AndroidRuntime(22799): FATAL EXCEPTION: TIMETHREAD
07-09 00:11:47.530: E/AndroidRuntime(22799): Process: testprogram, PID: 22799
07-09 00:11:47.530: E/AndroidRuntime(22799): java.lang.NullPointerException
07-09 00:11:47.530: E/AndroidRuntime(22799):    at testprogram.LocationActivity$1.run(LocationActivity.java:61)
07-09 00:11:47.530: E/AndroidRuntime(22799):    at java.lang.Thread.run(Thread.java:841)

以下是来源:

protected void onCreate(Bundle savedInstanceState) 
{
timethread = new Thread(new Runnable()
{
    @Override
    public void run() 
    {
        try 
        {
            while(0 < 1)
            {
                text_currentime.post(new Runnable() 
                {
                    public void run() 
                    {
                        text_currentime.setText(getCurrentTime());
                    }
                });
                Thread.sleep(UPDATE_TIME);
            }
        } 
        catch (InterruptedException e) 
        {
            e.printStackTrace();
        }
    }
});
timethread.setName("TIMETHREAD");
timethread.start();

1 个答案:

答案 0 :(得分:0)

你得到一个NullPointerException - 所以我会假设当你退出应用程序时,它正在摧毁你的线程。这可能发生在某些情况下,例如应用程序需要释放内存时。当您再次打开应用时,系统会调用活动的onResume方法,而不是onCreate,因此它会尝试引用不存在的内容。

所以你可以做的一件事就是使用Shared Preferences来保存任何变量,然后覆盖onResume方法并再次创建线程。