From 9ab7e2574795285b50435af661f6dbecec301ac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=9D=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=D1=81=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Tue, 2 Jul 2024 09:08:02 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MainActivity.java | 124 ++++++++++++++++++++++++++++++++++++++++++++++ activity_main.xml | 26 ++++++++++ 2 files changed, 150 insertions(+) create mode 100644 MainActivity.java create mode 100644 activity_main.xml diff --git a/MainActivity.java b/MainActivity.java new file mode 100644 index 0000000..887be97 --- /dev/null +++ b/MainActivity.java @@ -0,0 +1,124 @@ +package com.example.lifecyclelogger; + +import android.content.SharedPreferences; +import android.os.Bundle; +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Set; + +public class MainActivity extends AppCompatActivity { + + private TextView lifecycleTextView; + private List lifecycleEvents; + private SimpleDateFormat sdf; + private static final String PREF_NAME = "LifecycleLoggerPrefs"; + private static final String KEY_LIFECYCLE_EVENTS = "lifecycle_events"; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + lifecycleTextView = findViewById(R.id.lifecycleTextView); + sdf = new SimpleDateFormat("HH:mm:ss.SSS", Locale.getDefault()); + + // Initialize lifecycle events list + lifecycleEvents = new ArrayList<>(); + + // Load saved lifecycle events + loadLifecycleEvents(); + updateLifecycleTextView(); + + logAndDisplayLifecycleEvent("onCreate"); + } + + @Override + protected void onStart() { + super.onStart(); + logAndDisplayLifecycleEvent("onStart"); + } + + @Override + protected void onResume() { + super.onResume(); + logAndDisplayLifecycleEvent("onResume"); + } + + @Override + protected void onPause() { + super.onPause(); + logAndDisplayLifecycleEvent("onPause"); + } + + @Override + protected void onStop() { + super.onStop(); + logAndDisplayLifecycleEvent("onStop"); + + // Save lifecycle events when the activity is stopped + saveLifecycleEvents(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + logAndDisplayLifecycleEvent("onDestroy"); + } + + private void logAndDisplayLifecycleEvent(String event) { + String timestamp = sdf.format(new Date()); + String logEntry = timestamp + " - " + event; + lifecycleEvents.add(logEntry); + updateLifecycleTextView(); + } + + private void updateLifecycleTextView() { + StringBuilder sb = new StringBuilder(); + for (String e : lifecycleEvents) { + sb.append(e).append("\n"); + } + lifecycleTextView.setText(sb.toString()); + } + + private void saveLifecycleEvents() { + SharedPreferences prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + Set eventSet = new HashSet<>(lifecycleEvents); // Convert list to set to avoid duplicates + editor.putStringSet(KEY_LIFECYCLE_EVENTS, eventSet); + editor.apply(); + } + + private void loadLifecycleEvents() { + SharedPreferences prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE); + Set eventSet = prefs.getStringSet(KEY_LIFECYCLE_EVENTS, new HashSet<>()); + lifecycleEvents = new ArrayList<>(eventSet); // Convert set back to list + } + + public void onClearHistoryClicked(View view) { + // Clear saved events in SharedPreferences + SharedPreferences prefs = getSharedPreferences(PREF_NAME, MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + editor.remove(KEY_LIFECYCLE_EVENTS); + editor.apply(); + + // Clear lifecycle events list + lifecycleEvents.clear(); + updateLifecycleTextView(); + + // Add button click event to lifecycle events + logAndDisplayLifecycleEvent("Clear History button clicked"); + + // Save the new log entry + saveLifecycleEvents(); + } +} diff --git a/activity_main.xml b/activity_main.xml new file mode 100644 index 0000000..202c45b --- /dev/null +++ b/activity_main.xml @@ -0,0 +1,26 @@ + + + + + +