【发布时间】:2014-12-30 12:54:25
【问题描述】:
我正在构建一个可以按时计算屏幕的应用程序。首先,我构建了一个服务来将计数计时器值(如 00:00)发送到MainActivity,这是我的服务实现
public class MyService extends Service {
String time;
Intent io;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
return START_STICKY;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
try{
PowerManager power=(PowerManager) getSystemService(POWER_SERVICE);
boolean isScreenOn=power.isScreenOn();
while(isScreenOn){
try{
StopWatch count=new StopWatch();
long timer=count.getTime();
long seconds=timer/1000;
time = String.format("%02d:%02d", (seconds % 3600) / 60, (seconds % 60));//creating time
}catch(Exception e){
e.printStackTrace();
}
io=new Intent("COUNTDOWN_UPDATED");
io.putExtra("countdown",time);
sendBroadcast(io);// sending time value
}
}catch(Exception e){
e.printStackTrace();
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
这里是来自org.apache.commons.lang.time.StopWatch的 StopWatch 类,它可以从 0 开始计数计时器。
这是我的MainActivity 实现
Intent service=new Intent(this,MyService.class);
startService(service);
registerReceiver(updateGUI,new IntentFilter("COUNTDOWN_UPDATED"));
private BroadcastReceiver updateGUI=new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
TextView countdown= (TextView)findViewById(R.id.textView1);
countdown.setText(intent.getExtras().getString("countdown"));
}
};
当我运行我的应用程序时,计数器没有运行它停留在 00:00
【问题讨论】:
-
也放上你的logcat,这将有助于我们了解问题的原因。
标签: java android service counter