【问题标题】:System.currentTimeMillis() returning 0System.currentTimeMillis() 返回 0
【发布时间】:2012-09-26 09:54:25
【问题描述】:

我很困惑。几天前,这工作正常。我做了一些更改,现在它的行为非常奇怪。

我第一次调用该函数时,它返回 0。第二次,在后面的代码中,它返回正确的时间。

我将大部分类文件粘贴在这里,以便你们进行诊断。

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.newsdetail);

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
selectedNewsItem = newsList.get(_index);
            AlertDialog.Builder alert = new AlertDialog.Builder(NewsDetail.this);

            alert.setTitle(selectedNewsItem.getTitle());
            WebView wv = new WebView(NewsDetail.this);
            wv.getSettings().setUserAgentString("Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaC6-00/20.0.042; Profile/MIDP-2.1 Configuration/CLDC-1.1; zh-hk) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.2.6.9 3gpp-gba");
            wv.getSettings().setSupportZoom(false);
            wv.loadUrl(selectedNewsItem.getLink());
            wv.setWebViewClient(new WebViewClient()
            {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url)
                {
                    view.loadUrl(url);
                    startTime = System.currentTimeMillis();
                    return true;
                }
            });

            alert.setView(wv);
            alert.setOnKeyListener(new OnKeyListener()
            {
                boolean didItHappen = false;
                int happencount = 0;
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
                {
                    if(keyCode == event.KEYCODE_BACK)
                    {
                        happencount++;
                        endTime = System.currentTimeMillis();
                        Log.d("StartTime: ", String.valueOf(startTime));
                        Log.d("EndTime: ", String.valueOf(endTime));
                        totalTime = (endTime - startTime) / 1000;

                        if(happencount == 2)
                        {
                            Log.d("Time Spent: ", totalTime + " seconds");
                            didItHappen = true;
                        }
                    }
                    if(happencount == 2)
                    {
                        SharedPreferences shp;
                        SharedPreferences.Editor ed;                            
                        shp = getSharedPreferences("timespent", MODE_PRIVATE);
                        ed = shp.edit();

                        ed.putString("Title", selectedNewsItem.getTitle());
                        ed.putLong("Time", totalTime);
                        ed.putString("*****", "*****");                         
                        ed.commit();

                        startTime = 0;
                        endTime = 0;
                        totalTime = 0;
                        happencount = 0;
                    }

                    return false;
                }
            });
            alert.show();               
        }
    });
}

【问题讨论】:

  • 在初始化 startTime 的函数中放置一个日志,并检查它是否被调用..
  • 我会的。但它被调用是因为 loadUrl 函数有效并且 URL 加载正常。
  • 但你应该检查它何时被调用。就像给出的答案一样,您的 onkey() 处理程序将在 startTime 初始化之前被触发。
  • 它没有被调用。只有 loadUrl 被调用了。之后什么都没有。

标签: android time system


【解决方案1】:

startTime?我不确定您是否有证据表明在设置 startTimeSystem.currentTimeMillis() 返回 0。很有可能shouldOverrideUrlLoading 没有在您的onKey() 处理程序之前被调用,仅此而已。

【讨论】:

  • 但是为什么是零呢?如果那个东西没有被调用,它不应该给 NPE 吗?
  • 什么会导致 NPE?是long,对吧?如果未初始化,则其值初始化为 0。
  • 非常感谢您的帮助。你是对的。该函数没有被调用。调用了 lodUrl 函数,但应用程序并没有超出此范围。所以我该怎么做?在 loadUrl 函数之前移动我的 System.blahblah?编辑:试过了。仍然不起作用:s 我开始认为它甚至没有进入 shouldOverrideUrlLoading 函数。但是 URL 是如何加载的呢?
  • 编辑:试过了。仍然不起作用:s 我开始认为它甚至没有进入 shouldOverrideUrlLoading 函数。但是 URL 是如何加载的呢?
猜你喜欢
  • 1970-01-01
  • 2015-09-27
  • 2013-06-20
  • 2017-09-12
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多