Heyy!
我正在创建一个测试应用程序,用于检测设备是否连接到任何电源,并相应地显示状态为"充电"或者"放电"。直到这里工作得非常好。 现在我想要的是,当我取下电源时,它应该显示"放电"经过了10秒钟的延迟。在这10秒内,如果说,我重新连接电源,该应用程序不会更新其状态并保持在"充电"州。 我想保持延迟时间可配置。 我该怎么做? 这是迄今为止使用的代码段。它会毫不拖延地显示设备的状态。
BroadcastReceiver br = new BroadcastReceiver() {
@Override
public void onReceive(Context context , Intent intent) {
if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){
int btstatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
switch(btstatus)
{
case 1:
status="Unknown";
break;
case 2:
status="Charging";
break;
case 3:
status="Discharging";
break;
case 4:
status="Not charging";
break;
case 5:
status="Battery Full";
break;
default: status= "Error!";
}
tv2.setText(status);
//OnCreate method
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
tv1= (TextView)findViewById(R.id.textView1);
tv2=(TextView)findViewById(R.id.textView2);
registerReceiver(br, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
//onDestroy()
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
unregisterReceiver(br);
super.onDestroy();
}
答案 0 :(得分:0)
new AsyncTask() {
@Override
protected Object doInBackground(Object[] params) {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
protected void onPostExecute(Object o) {
// call a method that changes the state; don't change the state here, do it on the UI thread
}
}.execute();