如果你要在你的app中显示时间,你需要知道什么时候时间发生了变化,相应地更新app上的显示。
Android系统已经自带了广播时间变化的功能,我们只需要动态注册一个广播接收器,来处理接收到的广播就好了。
代码如下:
package com.aiden.timechange;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private TimeChangeReceiver timeChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_TIME_TICK);//每分钟变化
intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);//设置了系统时区
intentFilter.addAction(Intent.ACTION_TIME_CHANGED);//设置了系统时间
timeChangeReceiver = new TimeChangeReceiver();
registerReceiver(timeChangeReceiver, intentFilter);
}
public void onDestroy() {
super.onDestroy();
unregisterReceiver(timeChangeReceiver);
}
class TimeChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case Intent.ACTION_TIME_TICK:
//每过一分钟 触发
Toast.makeText(context, "1 min passed", Toast.LENGTH_SHORT).show();
break;
case Intent.ACTION_TIME_CHANGED:
//设置了系统时间
Toast.makeText(context, "system time changed", Toast.LENGTH_SHORT).show();
break;
case Intent.ACTION_TIMEZONE_CHANGED:
//设置了系统时区的action
Toast.makeText(context, "system time zone changed", Toast.LENGTH_SHORT).show();
break;
}
}
}
}
无需在AndroidManifest.xml中做任何改动。
测试通过。
网友评论