【问题标题】:Android second thread errorAndroid第二个线程错误
【发布时间】:2014-07-08 22:15:38
【问题描述】:

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

这是我的错误日志:

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();

【问题讨论】:

  • 您需要在此处添加更多上下文以供任何人帮助。错误发生时的堆栈跟踪(请参阅 Android Logcat),以及有关您如何使用上述代码的一些信息,特别是它如何与您的 Activity 关联。

标签: android eclipse multithreading exception


【解决方案1】:

你得到一个NullPointerException - 所以我假设当你退出应用程序时,它正在破坏你的线程。这可能在某些情况下发生,例如当应用程序需要释放内存时。当你再次打开你的应用时,Activity 的onResume 方法被调用而不是onCreate,所以它试图引用一些不存在的东西。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    相关资源
    最近更新 更多