۱۳۹۵/۱۱/۱۸, ۱۲:۴۶ ب.ظ
سلام من یه کرنومتر دارم میخوام وقتی بسته شد به کارش ادامه بده و توقف نکنه مگر با دستور مستقیم برنامه نویس من ازسرویس ها استفاده کردم و هر یه ثانیه مقدار کرنومتر رو به اکتیویتی مورد نظر ارسال کردم ولی فایده نداشت اینم کد سرویسم لطفا کمک کنید
کد:
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.SystemClock;
import android.widget.Chronometer;
public class ChronometerService extends Service {
private Intent intent;
public static final String BROADCAST_ACTION = "actionchronometer";
private Handler handler = new Handler();
private long initial_time;
long timeInMilliseconds = 0L;
private Chronometer runedTime;
String hh,mm,ss;
@Override
public void onCreate() {
super.onCreate();
runedTime=new Chronometer(this);
initial_time = SystemClock.uptimeMillis();
intent = new Intent(BROADCAST_ACTION);
handler.removeCallbacks(sendUpdatesToUI);
handler.postDelayed(sendUpdatesToUI, 1000); // 1 second
}
private Runnable sendUpdatesToUI = new Runnable() {
public void run() {
timer();
handler.postDelayed(this, 1000); // 1 seconds
}
};
@Override
public void onDestroy() {
super.onDestroy();
handler.removeCallbacks(sendUpdatesToUI);
}
private void timer() {
runedTime.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer cArg) {
long time = SystemClock.elapsedRealtime() - cArg.getBase();
int h = (int) (time / 3600000);
int m = (int) (time - h * 3600000) / 60000;
int s = (int) (time - h * 3600000 - m * 60000) / 1000;
hh = h < 10 ? "0" + h : h + "";
mm = m < 10 ? "0" + m : m + "";
ss = s < 10 ? "0" + s : s + "";
}
});
runedTime.setBase(SystemClock.elapsedRealtime());
runedTime.start();
String value =hh+":"+mm+":"+ss;
intent.putExtra("time", value);
sendBroadcast(intent);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}