java中获取了当前系统地时间,怎样每秒获取更新一次呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中获取了当前系统地时间,怎样每秒获取更新一次呢?相关的知识,希望对你有一定的参考价值。
这里是代码,请求大神帮忙补充完整,最好是后面加上注释,谢谢!
public class MainActivity extends ActionBarActivity
public String editText = "";
public Time clock = new Time();
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);//创建新的界面(super)属于父类
setContentView(R.layout.activity_main);//创建界面
if (savedInstanceState == null)
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
@Override
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
@Override
public boolean onOptionsItemSelected(MenuItem item)
//菜单以及菜单的响应
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in androidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings)
return true;
return super.onOptionsItemSelected(item);
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment
private TextView tvResult=null;//新的TextV
private OnClickListener mListener = new OnClickListener()
@Override
public void onClick(View arg0)
if (arg0.getId() == R.id.btn1)
startActivity(new Intent(PlaceholderFragment.this.getActivity(), AddActivity.class));//启动那个类要告诉startActivity
else if (arg0.getId() == R.id.btn2)
startActivity(new Intent(PlaceholderFragment.this.getActivity(),SetupActivity.class));
;
// 构造函数 constructor
public PlaceholderFragment()
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss ");
Date curDate = new Date(System.currentTimeMillis());//获取当前时间
String str = formatter.format(curDate);
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
tvResult= (TextView)rootView.findViewById(R.id.tvResult);
tvResult.setText("Time");
tvResult.setText(formatter.format(curDate));
TextView btn1=(TextView)rootView.findViewById(R.id.btn1);
btn1.setText("添加闹钟");
TextView btn2=(TextView)rootView.findViewById(R.id.btn2);
btn2.setText("设置");
tvResult.setOnClickListener(mListener);
btn1.setOnClickListener(mListener);
btn2.setOnClickListener(mListener);
return rootView;
;
2、多线程有继承Thread类 和 实现Runnable接口两种实现方式
3、一般会考虑用实现Runnable接口会更好一点,因为Runnable接口能够实现资源的共享 参考技术B 开启一个线程,每秒更新时间 参考技术C Thread + Handler
为啥它每秒都在不断地重新获取 graphQL?
【中文标题】为啥它每秒都在不断地重新获取 graphQL?【英文标题】:Why it is continuously re-fetching graphQL on every second?为什么它每秒都在不断地重新获取 graphQL? 【发布时间】:2020-05-27 18:28:13 【问题描述】:在我的 NextJs 前端应用程序中使用带有 graphQL 的 Strapi 服务器上的 @apollo/react-hooks useQuery() 过滤当前日期时间的数据。 myComponent 在 _app.js 之后渲染为子组件
myComponent.js
import useQuery from "@apollo/react-hooks";
import MY_QUERY from "../apollo/queries/home/home";
export default () =>
let currentDateTime = new Date(Date.now());
let currentIsoDateTime = currentDateTime.toISOString();
const data, loading, error = useQuery(MY_QUERY,
variables:
currentIsoDateTime: currentIsoDateTime
);
return <>data</>
查询
export const MY_QUERY = gql`
query($currentIsoDateTime: DateTime)
events(where:DateTime_gt:$currentIsoDateTime)
id
Title
DateTime
`;
currentDateTime
随时间变化,从 graphQL 中获取数据,结果无限
【问题讨论】:
【参考方案1】:查询消耗currentIsoDateTime
那么这是一个要在状态中定义的变量:
const [currentIsoDateTime] = React.useState(() => new Date(Date.now()).toISOString() );
【讨论】:
【参考方案2】:数据加载完毕后,apollo 会更新loading
状态,这会重新渲染你的组件。现在因为 Date 是在 render 方法中创建的,它会在每次渲染时创建不同的时间。
这会更改 GraphQL API 的变量,并且 apollo 将使用新变量重新获取 API 调用。
您可以检查开发控制台中的网络选项卡,并查看每个查询都使用不同的currentISODateTime
值调用
为避免这种情况,您可以通过将其初始化为状态来重新使用初始日期时间。例如
const [currentDateTime] = React.useState(() => new Date(Date.now()));
【讨论】:
你解释的很完美,但在将currentDateTime
初始化为一个状态后,它仍然让我遇到同样的问题。有没有其他方法可以解决?
你可以试试 console.log currentIsoDateTime
看看每次渲染后值是否变化?
如果currentIsoDateTime
没有在查询中作为变量应用,则最多打印 2 次span>
如果它被渲染 2 次,那么它是正确的行为:1 次初始加载和 1 次获取数据后。但前提是你不使用currentIsoDateTime
。 2 个打印的值是相同还是不同?
两个打印值相同以上是关于java中获取了当前系统地时间,怎样每秒获取更新一次呢?的主要内容,如果未能解决你的问题,请参考以下文章