0
私はアクティビティの開始から時間をカウントするアンドロイドアプリケーションを構築しています。初めてアクティビティを開始したときに、タイマーは正常に動作し、TextViewに時間が表示されます。 私は(電話をひっくり返す)の活動を終了し、タイマーが正常に動作再起動しよう(私はログとして表示)が、TextViewには、私が使用している方法でstart AsyncTask second time
override fun doInBackground(vararg params: Activity): String? {
val acc = Accelerometer(params[0])
dealsList.forEach {Log.d("fallDeals", it) }
while (true) {
sleep(100)
publishProgress()
Log.i("TAG", "${tiltSensorsValues[0] - acc.xPos!!} ${tiltSensorsValues[1] - acc.yPos!!} ${acc.zPos!!}")
if (flippedPhone(acc)) {
Log.i("REFRENCES", "${dbRefrences.stateRef}")
dbRefrences.stateRef.setValue("empty")
addToOldDataTableDatabase()
return "Triggered"
break
}
}
}
private fun flippedPhone(acc: Accelerometer) =
(tiltSensorsValues[0] - acc.xPos!! < -4 || tiltSensorsValues[0] - acc.xPos!! > 4 ||
tiltSensorsValues[1] - acc.yPos!! < -4 || tiltSensorsValues[1] - acc.yPos!! > 4)
override fun onPostExecute(result: String?) {
super.onPostExecute(result)
dbRefrences.currentRef.child(USERS).removeValue()
dbRefrences.stateRef.setValue("empty")
Toast.makeText(context,setTimer(),Toast.LENGTH_SHORT).show()
}
//*********************************************
//Functions
//*********************************************
/**
* adding the data to the old data table
*/
private fun addToOldDataTableDatabase() {
val oldDataTableRef = dbRefrences.tableRef.child(OLD_DATA)
oldDataTableRef.child(gDate()).child(getCurrentTime())?.child(TIME)?.setValue(timer.text)
Log.i("My Service", userList.size.toString())
userList.forEach {
oldDataTableRef.child(gDate()).child(getCurrentTime())?.child(PARTICIPANTS)?.
child(it.userId)?.setValue(it.name)
}
}
private fun gDate(): String {
val c = Calendar.getInstance()
val df = SimpleDateFormat("dd-MM-yyyy")
return df.format(c.time)
}
/**
* return the time that has passed since the group started
*/
private fun setTimer(): String {
val difference = Calendar.getInstance().timeInMillis - startTime
val minutes = TimeUnit.MILLISECONDS.toMinutes(difference).rem(60)
val seconds = TimeUnit.MILLISECONDS.toSeconds(difference).rem(60)
val hours = TimeUnit.MILLISECONDS.toHours(difference).rem(24)
Log.i("TAG", "${String.format("%02d", hours)}:${String.format("%02d", minutes)}:${String.format("%02d", seconds)}")
return "${String.format("%02d", hours)}:${String.format("%02d", minutes)}:${String.format("%02d", seconds)}"
}
/**
* changing the textView text to the time that has passed since they started
*/
override fun onProgressUpdate(vararg values: Void?) {
super.onProgressUpdate(*values)
timer.text = setTimer()
}
を変更しない場合あなたの問題を解決するため
AsyncTaskは、あなたの活動の参照を保持し、あなたが原因AsyncTaskと古いAsynctTaskのまだ古い1あなたの活動を再作成するたびに、まだ実行されています、それであなたは私にog。このコードはすべて、コードを書くべきではありません。 –
'私がアクティビティを終えると(電話をひっくり返して)、もう一度やり直してください。あなたが何をやり直そうとしているのかは不明です。さらに、asynctasksは再起動できません。新しいasynctaskを作成する必要があります。 – greenapps
私の神... @Bernouilli Gateあなたはすべての投稿の編集をやめることができますか?かなりannoing。私はOPがあなただったことを発見するために編集したものをチェックしていました。 – greenapps