├── .gitignore
├── LICENSE
├── README.md
├── android.keystore
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── urbandroid
│ │ └── dontkillmyapp
│ │ ├── MainActivity.kt
│ │ ├── RateActivity.kt
│ │ ├── RestartReceiver.kt
│ │ ├── ResultActivity.kt
│ │ ├── common.kt
│ │ ├── domain
│ │ └── Benchmark.kt
│ │ ├── gui
│ │ ├── BenchmarkView.kt
│ │ └── FloatingMaterialButtonBehavior.java
│ │ └── service
│ │ └── BenchmarkService.kt
│ └── res
│ ├── drawable-hdpi
│ ├── ic_alarm.png
│ ├── ic_main.png
│ └── ic_work.png
│ ├── drawable-mdpi
│ ├── ic_alarm.png
│ ├── ic_main.png
│ └── ic_work.png
│ ├── drawable-nodpi
│ └── rate.png
│ ├── drawable-v24
│ └── ic_launcher_foreground.xml
│ ├── drawable-xhdpi
│ ├── ic_alarm.png
│ ├── ic_main.png
│ └── ic_work.png
│ ├── drawable-xxhdpi
│ ├── ic_alarm.png
│ ├── ic_main.png
│ └── ic_work.png
│ ├── drawable
│ ├── ic_delete_24.xml
│ ├── ic_dkma.xml
│ ├── ic_info_24.xml
│ ├── ic_play_circle_24.xml
│ ├── ic_share_24.xml
│ └── logo.xml
│ ├── layout-v21
│ └── view_report.xml
│ ├── layout
│ ├── activity_main.xml
│ ├── activity_rate.xml
│ ├── activity_result.xml
│ ├── dialog_item.xml
│ ├── view_fab.xml
│ ├── view_report.xml
│ └── view_toolbar.xml
│ ├── menu
│ ├── menu_main.xml
│ └── menu_result.xml
│ ├── mipmap-anydpi-v26
│ └── ic_launcher.xml
│ ├── mipmap-anydpi-v31
│ └── ic_launcher.xml
│ ├── mipmap-hdpi
│ ├── ic_foreground.png
│ └── ic_launcher.png
│ ├── mipmap-mdpi
│ ├── ic_foreground.png
│ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ ├── ic_foreground.png
│ └── ic_launcher.png
│ ├── mipmap-xxhdpi
│ ├── ic_foreground.png
│ └── ic_launcher.png
│ ├── mipmap-xxxhdpi
│ ├── ic_foreground.png
│ └── ic_launcher.png
│ ├── values-cs
│ └── strings.xml
│ ├── values-da
│ └── strings.xml
│ ├── values-de
│ └── strings.xml
│ ├── values-es
│ └── strings.xml
│ ├── values-fa
│ └── strings.xml
│ ├── values-fil
│ └── strings.xml
│ ├── values-fr
│ └── strings.xml
│ ├── values-id
│ └── strings.xml
│ ├── values-in
│ └── strings.xml
│ ├── values-it
│ └── strings.xml
│ ├── values-ja
│ └── strings.xml
│ ├── values-night-v31
│ └── colors.xml
│ ├── values-night
│ ├── colors.xml
│ └── styles.xml
│ ├── values-nl
│ └── strings.xml
│ ├── values-pl
│ └── strings.xml
│ ├── values-pt-rBR
│ └── strings.xml
│ ├── values-pt
│ └── strings.xml
│ ├── values-ro
│ └── strings.xml
│ ├── values-ru
│ └── strings.xml
│ ├── values-tr
│ └── strings.xml
│ ├── values-uz
│ └── strings.xml
│ ├── values-v31
│ └── colors.xml
│ ├── values-vi
│ └── strings.xml
│ ├── values-zh-rTW
│ └── strings.xml
│ ├── values-zh
│ └── strings.xml
│ └── values
│ ├── colors.xml
│ ├── strings.xml
│ └── styles.xml
├── build.gradle
├── fastlane
└── metadata
│ └── android
│ └── en-US
│ ├── full_description.txt
│ ├── images
│ ├── featureGraphic.png
│ ├── icon.png
│ └── phoneScreenshots
│ │ ├── 01.png
│ │ ├── 02.png
│ │ ├── 03.png
│ │ ├── 04.png
│ │ ├── 05.png
│ │ ├── 06.png
│ │ └── 07.png
│ ├── short_description.txt
│ ├── title.txt
│ └── video.txt
├── gradle.properties
├── ressrc
└── store-listing
│ ├── ss-template.svg
│ ├── ss1.png
│ ├── ss2.png
│ ├── ss3.png
│ ├── ss4.png
│ └── ss5.png
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | .idea
3 | build
4 | gradle/wrapper
5 | gradlew
6 | gradlew.bat
7 | local.properties
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DontKillMyApp
2 |
3 | Helps you set up your phone background tasks so that your apps can finally work for YOU even when not looking at the screen right now. See how is your phone doing and test different settings with DontKillMyApp benchmark.
4 |
5 | [
](https://f-droid.org/packages/com.urbandroid.dontkillmyapp/)
8 | [
](https://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp)
11 |
12 | ## Features:
13 | * DKMA benchmark: Measure how aggressively is your phone killing background apps
14 | * Guides: Get actionable steps to overcome most background process restrictions
15 | * Make a change:️ Help smartphones stay smart by sharing your benchmark report to dontkillmyapp.com
16 |
17 | DontKillMyApp is a tool for benchmarking nonstandard background processing limitations that are done by OEMs on different Android flavours. You can measure before setting up your phone, then go through the setup guides and benchmark again to see how much has your phone been slacking in the background.
18 |
19 | You can share your report through the app to the maintainers of the dontkillmyapp.com website who compile it and base the overall negative score on it.
20 |
21 | ## How does the benchmark work?
22 |
23 | The app starts a foreground service with a wake lock and schedules repetitive task on the main thread, a custom thread executor and schedules regular alarms (AlarmManager.setExactAndAllowWhileIdle). Then it calculates executed vs. expected. That's it!
24 |
--------------------------------------------------------------------------------
/android.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/android.keystore
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | android.keystore
2 | gradle.properties
3 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'kotlin-android'
3 | apply plugin: 'kotlin-android-extensions'
4 |
5 | android {
6 | compileSdk 33
7 |
8 | namespace "com.urbandroid.dontkillmyapp"
9 |
10 | defaultConfig {
11 | minSdkVersion 24
12 | targetSdkVersion 33
13 | versionCode 35
14 | versionName "2.6"
15 |
16 | multiDexEnabled true
17 |
18 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
19 | }
20 |
21 | signingConfigs {
22 | release {
23 | storeFile file("android.keystore")
24 | storePassword projectKeystorePassword
25 | keyAlias projectKeystoreAlias
26 | keyPassword projectKeystorePassword
27 | }
28 | }
29 |
30 | buildTypes {
31 | release {
32 | minifyEnabled true
33 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
34 | signingConfig signingConfigs.release
35 | }
36 | }
37 | namespace 'com.urbandroid.dontkillmyapp'
38 | }
39 |
40 | dependencies {
41 | implementation fileTree(dir: "libs", include: ["*.jar"])
42 | implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
43 | implementation 'androidx.core:core-ktx:1.7.0'
44 | implementation 'androidx.appcompat:appcompat:1.4.1'
45 | implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
46 | testImplementation 'junit:junit:4.13.2'
47 | androidTestImplementation 'androidx.test.ext:junit:1.1.3'
48 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
49 |
50 | implementation 'com.google.android.material:material:1.5.0'
51 |
52 | implementation 'com.google.android.play:core:1.10.3'
53 |
54 | implementation 'androidx.multidex:multidex:2.0.1'
55 |
56 | def preference_version = "1.1.1"
57 |
58 | // Java language implementation
59 | implementation "androidx.preference:preference:$preference_version"
60 | // Kotlin
61 | implementation "androidx.preference:preference-ktx:$preference_version"
62 | implementation 'com.google.code.gson:gson:2.8.6'
63 |
64 | dependencies {
65 | implementation('dev.doubledot.doki:library:0.0.1@aar') {
66 | transitive = true
67 | }
68 | }
69 | }
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | -dontobfuscate
16 |
17 | # Uncomment this to preserve the line number information for
18 | # debugging stack traces.
19 | -keepattributes SourceFile,LineNumberTable
20 |
21 | # If you keep the line number information, uncomment this to
22 | # hide the original source file name.
23 | #-renamesourcefileattribute SourceFile
24 |
25 | -keepnames class com.urbandroid.dontkillmyapp.*
26 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/urbandroid/dontkillmyapp/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.urbandroid.dontkillmyapp
2 |
3 | import android.Manifest.permission
4 | import android.app.AlarmManager
5 | import android.content.Context
6 | import android.content.Intent
7 | import android.content.res.Resources.getSystem
8 | import android.net.Uri
9 | import android.os.Build
10 | import android.os.Bundle
11 | import android.provider.Settings
12 | import android.util.Log
13 | import android.view.Menu
14 | import android.view.MenuItem
15 | import android.view.View
16 | import android.view.ViewGroup
17 | import android.widget.ArrayAdapter
18 | import android.widget.Toast
19 | import androidx.activity.result.contract.ActivityResultContracts.RequestPermission
20 | import androidx.appcompat.app.AppCompatActivity
21 | import androidx.appcompat.widget.Toolbar
22 | import androidx.core.app.NotificationManagerCompat
23 | import androidx.core.view.get
24 | import androidx.preference.PreferenceManager
25 | import com.google.android.material.dialog.MaterialAlertDialogBuilder
26 | import com.urbandroid.dontkillmyapp.domain.Benchmark
27 | import com.urbandroid.dontkillmyapp.service.BenchmarkService
28 | import kotlinx.android.synthetic.main.activity_main.*
29 |
30 | class MainActivity : AppCompatActivity() {
31 |
32 | val launchServiceAfterPermission = registerForActivityResult(RequestPermission()) {
33 | if (it) {
34 | startBenchmark()
35 | }
36 | }
37 | val chooseDurationAfterPermission = registerForActivityResult(RequestPermission()) {
38 | if (it) {
39 | chooseDuration()
40 | }
41 | }
42 |
43 | override fun onCreate(savedInstanceState: Bundle?) {
44 | super.onCreate(savedInstanceState)
45 | setContentView(R.layout.activity_main)
46 |
47 | val topView = findViewById(dev.doubledot.doki.R.id.deviceManufacturerHeader)
48 |
49 | val param = topView.layoutParams as ViewGroup.MarginLayoutParams
50 | param.setMargins(0, 64.dp,0,0)
51 | topView.layoutParams = param
52 |
53 | val appBar = findViewById(dev.doubledot.doki.R.id.appbar)
54 | val cToolbar = (appBar.get(0) as ViewGroup).get(0) as ViewGroup
55 | val parent = findViewById(dev.doubledot.doki.R.id.doki_full_content)
56 | var fab = layoutInflater.inflate(R.layout.view_fab, parent, false)
57 | var toolbar = layoutInflater.inflate(R.layout.view_toolbar, cToolbar, false) as Toolbar
58 | parent.addView(fab, parent.childCount)
59 | cToolbar.addView(toolbar, 0)
60 |
61 | setSupportActionBar(toolbar)
62 | supportActionBar?.setTitle("")
63 |
64 | fab.setOnClickListener {
65 | Log.i(TAG, "start clicked")
66 |
67 | if (BenchmarkService.RUNNING) {
68 | Toast.makeText(this, R.string.already_running, Toast.LENGTH_LONG).show()
69 | } else {
70 | if (hasExactAlarmPermission(this)) {
71 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !NotificationManagerCompat.from(this).areNotificationsEnabled()) {
72 | chooseDurationAfterPermission.launch(permission.POST_NOTIFICATIONS)
73 | } else {
74 | chooseDuration()
75 | }
76 | }
77 | }
78 | }
79 | }
80 |
81 | fun chooseDuration() {
82 | val builder = MaterialAlertDialogBuilder(this)
83 | builder.setTitle(R.string.duration)
84 |
85 | val arrayAdapter = ArrayAdapter(
86 | this,
87 | R.layout.dialog_item, resources.getStringArray(R.array.duration_array)
88 | )
89 |
90 | builder.setNegativeButton(R.string.cancel, null)
91 |
92 | builder.setAdapter(arrayAdapter
93 | ) { _, which ->
94 | PreferenceManager.getDefaultSharedPreferences(this).edit().putLong(
95 | KEY_BENCHMARK_DURATION, (which * HOUR_IN_MS) + HOUR_IN_MS
96 | ).apply()
97 |
98 | val builder = MaterialAlertDialogBuilder(this)
99 | builder.setTitle(R.string.warning_title)
100 | builder.setMessage(R.string.warning_text)
101 | builder.setPositiveButton(
102 | R.string.ok
103 | ) { _, _ ->
104 | startBenchmark()
105 | }
106 | builder.setNegativeButton(R.string.cancel, null)
107 |
108 | builder.show()
109 | }
110 | builder.show()
111 |
112 | }
113 |
114 | fun startBenchmark() {
115 | Toast.makeText(MainActivity@this, R.string.started, Toast.LENGTH_SHORT).show()
116 | BenchmarkService.start(this)
117 | }
118 |
119 | val Int.dp: Int get() = (this * getSystem().displayMetrics.density).toInt()
120 |
121 | fun hasExactAlarmPermission(context : Context) : Boolean {
122 | val am = context.getSystemService(AppCompatActivity.ALARM_SERVICE) as AlarmManager
123 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && !am.canScheduleExactAlarms()) {
124 | val builder = MaterialAlertDialogBuilder(this)
125 | builder.setTitle(context.getString(R.string.exact_alarm_restrictions_title))
126 | builder.setMessage(context.getString(R.string.exact_alarm_restrictions_summary))
127 | builder.setPositiveButton(
128 | R.string.ok
129 | ) { _, _ ->
130 | try {
131 | val intent = Intent(
132 | Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM,
133 | Uri.fromParts("package", context.packageName, null)
134 | )
135 | context.startActivity(intent)
136 | } catch (e: java.lang.Exception) {
137 | Toast.makeText(
138 | context, R.string.general_error,
139 | Toast.LENGTH_LONG
140 | ).show()
141 | }
142 | }
143 | builder.setNegativeButton(R.string.cancel, null)
144 | builder.show()
145 | return false
146 | }
147 | return true
148 | }
149 |
150 |
151 | override fun onResume() {
152 | super.onResume()
153 |
154 | doki_content.loadContent()
155 | doki_content.setButtonsVisibility(false)
156 |
157 | val currentBenchmark = Benchmark.load(this)
158 | currentBenchmark?.let {
159 | if (it.running) {
160 | if (hasExactAlarmPermission(this)) {
161 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !NotificationManagerCompat.from(this).areNotificationsEnabled()) {
162 | launchServiceAfterPermission.launch(permission.POST_NOTIFICATIONS)
163 | } else {
164 | startBenchmark()
165 | }
166 | }
167 | } else {
168 | ResultActivity.start(this)
169 | }
170 | }
171 |
172 | }
173 |
174 |
175 | override fun onCreateOptionsMenu(menu: Menu): Boolean {
176 | menuInflater.inflate(R.menu.menu_main, menu)
177 | return true
178 | }
179 |
180 | override fun onOptionsItemSelected(item: MenuItem): Boolean {
181 | when (item.itemId) {
182 | R.id.how_it_works -> {
183 | val builder = MaterialAlertDialogBuilder(this)
184 | builder.setTitle(R.string.how_it_works)
185 | builder.setMessage(R.string.how_it_works_text)
186 | builder.setPositiveButton(R.string.ok, null)
187 | builder.show()
188 | }
189 | R.id.support -> {
190 | var subject = "DontKillMyApp Feedback"
191 | var body = ""
192 |
193 | val i = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:support@urbandroid.com?&subject=" + Uri.encode(subject) +
194 | "&body="))
195 |
196 | i.putExtra(Intent.EXTRA_SUBJECT, subject)
197 | try {
198 | startActivity(Intent.createChooser(i, getString(R.string.contact_support)))
199 | } catch (e: Exception) {
200 | Log.e(TAG, "Error $e")
201 | }
202 |
203 | }
204 | R.id.tell_others -> {
205 | var subject = "${getString(R.string.app_name)} ${getString(R.string.benchmark)}"
206 | var body = getString(R.string.tell_others_text)
207 |
208 | val i = Intent(Intent.ACTION_SEND)
209 | i.type = "text/plain"
210 |
211 | i.putExtra(Intent.EXTRA_SUBJECT, subject)
212 | i.putExtra(Intent.EXTRA_TEXT, body)
213 | try {
214 | startActivity(Intent.createChooser(i, getString(R.string.tell_others)))
215 | } catch (e: Exception) {
216 | Log.e(TAG, "Error $e")
217 | }
218 |
219 | }
220 | R.id.rate -> {
221 | val url = "$PLAY_STORE_PREFIX$packageName"
222 | val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
223 | try {
224 | startActivity(intent)
225 | } catch (e: java.lang.Exception) {
226 | Toast.makeText(this, "Cannot open $url", Toast.LENGTH_LONG).show()
227 | }
228 | }
229 | R.id.source -> {
230 | val url = "https://github.com/urbandroid-team/dontkillmy-app"
231 | val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
232 | try {
233 | startActivity(intent)
234 | } catch (e: java.lang.Exception) {
235 | Toast.makeText(this, "Cannot open $url", Toast.LENGTH_LONG).show()
236 | }
237 | }
238 | R.id.translate -> {
239 | val url = "https://docs.google.com/spreadsheets/d/1DJ6nvdv2X8Q8e4NXu9VE0dT3SL72JX9evTmlDDALfRM/edit#gid=141810181"
240 | val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
241 | try {
242 | startActivity(intent)
243 | } catch (e: java.lang.Exception) {
244 | Toast.makeText(this, "Cannot open $url", Toast.LENGTH_LONG).show()
245 | }
246 | }
247 | }
248 | return true
249 | }
250 |
251 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/urbandroid/dontkillmyapp/RateActivity.kt:
--------------------------------------------------------------------------------
1 | package com.urbandroid.dontkillmyapp
2 |
3 | import android.content.Context
4 | import android.content.Intent
5 | import android.net.Uri
6 | import android.os.Bundle
7 | import android.widget.Toast
8 | import androidx.appcompat.app.AppCompatActivity
9 | import androidx.preference.PreferenceManager
10 | import kotlinx.android.synthetic.main.activity_rate.*
11 | import java.util.concurrent.TimeUnit
12 |
13 | class RateActivity : AppCompatActivity() {
14 | override fun onCreate(savedInstanceState: Bundle?) {
15 | super.onCreate(savedInstanceState)
16 | setContentView(R.layout.activity_rate)
17 |
18 | setTitle(R.string.rate)
19 |
20 | rate.setOnClickListener {
21 | val url = "$PLAY_STORE_PREFIX$packageName"
22 | val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
23 | try {
24 | startActivity(intent)
25 | } catch (e: java.lang.Exception) {
26 | Toast.makeText(this, "Cannot open $url", Toast.LENGTH_LONG).show()
27 | }
28 | PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean(KEY_RATE_DONE, true).apply()
29 | finish()
30 | }
31 |
32 | later.setOnClickListener {
33 | setRateLater(this)
34 | finish()
35 | }
36 |
37 | never.setOnClickListener {
38 | PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean(KEY_RATE_NEVER, true).apply()
39 |
40 | finish()
41 | }
42 | }
43 |
44 | companion object {
45 |
46 | fun isRateDone(context : Context) : Boolean {
47 | return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(KEY_RATE_DONE, false)
48 | }
49 |
50 | fun isTimeToRateAgain(context : Context) : Boolean {
51 | val ts = PreferenceManager.getDefaultSharedPreferences(context).getLong(KEY_RATE_LATER, -1)
52 | return ts == -1L || System.currentTimeMillis() - ts > TimeUnit.DAYS.toMillis(7)
53 | }
54 |
55 | fun getTimeToRateAgain(context : Context) : Long {
56 | return PreferenceManager.getDefaultSharedPreferences(context).getLong(KEY_RATE_LATER, -1)
57 | }
58 |
59 | fun isRateNever(context : Context) : Boolean {
60 | return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(KEY_RATE_NEVER, false)
61 | }
62 |
63 | fun setRateLater(context : Context) {
64 | PreferenceManager.getDefaultSharedPreferences(context).edit().putLong(KEY_RATE_LATER, System.currentTimeMillis()).apply()
65 | }
66 |
67 | fun shouldStartRating(context : Context) : Boolean {
68 | return !isRateDone(context) && !isRateNever(context) && isTimeToRateAgain(context)
69 | }
70 |
71 | fun start(context : Context) {
72 | if (shouldStartRating(context)) {
73 | context.startActivity(Intent(context, RateActivity::class.java))
74 | }
75 | }
76 | }
77 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/urbandroid/dontkillmyapp/RestartReceiver.kt:
--------------------------------------------------------------------------------
1 | package com.urbandroid.dontkillmyapp
2 |
3 | import android.content.BroadcastReceiver
4 | import android.content.Context
5 | import android.content.Intent
6 | import android.util.Log
7 | import com.urbandroid.dontkillmyapp.domain.Benchmark
8 | import com.urbandroid.dontkillmyapp.service.BenchmarkService
9 |
10 | class RestartReceiver : BroadcastReceiver() {
11 |
12 | override fun onReceive(context: Context?, intent: Intent?) {
13 | Log.i(TAG, "Receiver " + intent?.action)
14 |
15 | context?.apply {
16 | val currentBenchmark = Benchmark.load(context)
17 | if (currentBenchmark != null && currentBenchmark.running) {
18 | BenchmarkService.start(this)
19 | }
20 |
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/urbandroid/dontkillmyapp/common.kt:
--------------------------------------------------------------------------------
1 | package com.urbandroid.dontkillmyapp
2 |
3 | import java.util.concurrent.TimeUnit
4 |
5 | val ALARM_REPEAT_MS : Long = TimeUnit.MINUTES.toMillis(10)
6 | const val ALARM_REPEAT_MARGIN_MS : Long = 30000
7 | val WORK_REPEAT_MS : Long = TimeUnit.SECONDS.toMillis(10)
8 | val MAIN_REPEAT_MS : Long = TimeUnit.SECONDS.toMillis(10)
9 |
10 | val HOUR_IN_MS : Long = TimeUnit.HOURS.toMillis(1)
11 | val BENCHMARK_DURATION : Long = HOUR_IN_MS * 3
12 |
13 | const val KEY_RATE_LATER : String = "Rate_later_1"
14 | const val KEY_RATE_NEVER : String = "Rate_never_2"
15 | const val KEY_RATE_DONE : String = "Rate_done_2"
16 | const val KEY_BENCHMARK : String = "Benchmark"
17 | const val KEY_BENCHMARK_DURATION : String = "Benchmark_duration"
18 |
19 | const val NOTIFICATION_CHANNEL_FOREGROUND = "foreground"
20 | const val NOTIFICATION_CHANNEL_REPORT = "report"
21 |
22 | const val ACTION_ALARM = "com.urbandroid.dontkillmyapp.ACTION_ALARM"
23 | const val EXTRA_DURATION_MS : String = "extra_duration_ms"
24 |
25 | const val TAG = "DKMA"
26 |
27 | const val PLAY_STORE_PREFIX = "market://details?id="
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/urbandroid/dontkillmyapp/domain/Benchmark.kt:
--------------------------------------------------------------------------------
1 | package com.urbandroid.dontkillmyapp.domain
2 |
3 | import android.annotation.SuppressLint
4 | import android.content.Context
5 | import android.os.Build
6 | import android.text.format.DateUtils
7 | import android.util.Log
8 | import androidx.preference.PreferenceManager
9 | import com.google.gson.Gson
10 | import com.urbandroid.dontkillmyapp.*
11 | import java.util.*
12 | import kotlin.math.roundToInt
13 |
14 | data class Benchmark(val from : Long, var to : Long) {
15 |
16 | var running : Boolean = true
17 |
18 | val workEvents = mutableListOf()
19 | val mainEvents = mutableListOf()
20 | val alarmEvents = mutableListOf()
21 |
22 | fun getWorkResult() : Float {
23 | return ((workEvents.size + 1) / ((to - from) / WORK_REPEAT_MS.toFloat())).coerceAtMost(1f)
24 | }
25 |
26 | fun getTotalResult() : Float {
27 | return (getWorkResult() + (2 * getAlarmResult()) + getMainResult()) / 4f
28 | }
29 |
30 | fun getMainResult() : Float {
31 | return ((mainEvents.size + 1) / ((to - from) / MAIN_REPEAT_MS.toFloat())).coerceAtMost(1f)
32 | }
33 |
34 | fun getAlarmResult() : Float {
35 | return ((alarmEvents.size + 1) / ((to - from) / (ALARM_REPEAT_MS + ALARM_REPEAT_MARGIN_MS).toFloat())).coerceAtMost(1f)
36 | }
37 |
38 | fun getDuration() : Long {
39 | return to - from
40 | }
41 |
42 | fun getDurationSeconds() : Long {
43 | return (to - from) / 1000
44 | }
45 |
46 |
47 | override fun toString(): String {
48 | return "Benchmark ${Date(from)} ${Date(to)} MAIN ${mainEvents.size} WORK ${workEvents.size} ALARM ${alarmEvents.size}"
49 | }
50 |
51 | companion object {
52 |
53 | fun load(context : Context) : Benchmark? {
54 | val json = PreferenceManager.getDefaultSharedPreferences(context).getString(KEY_BENCHMARK, null)
55 |
56 | Log.i(TAG, "JSON: $json")
57 |
58 | json?.apply {
59 | return Gson().fromJson(json, Benchmark::class.java)
60 | }
61 | return null
62 | }
63 |
64 |
65 | fun generateTextReport(context : Context, benchmark : Benchmark?) : String {
66 | return "${context.getString(R.string.app_name)} ${context.getString(R.string.report)} \n\n" +
67 | "${Build.MODEL} (${Build.DEVICE}) by ${Build.MANUFACTURER}, Android ${Build.VERSION.RELEASE} \n\n" +
68 | "TOTAL \n${Benchmark.formatResult(benchmark?.getTotalResult() ?: 0f)} \n\n" +
69 | "WORK \n${Benchmark.formatResult(benchmark?.getWorkResult() ?: 0f)} \n\n" +
70 | "MAIN \n${Benchmark.formatResult(benchmark?.getMainResult() ?: 0f)} \n\n" +
71 | "ALARM \n${Benchmark.formatResult(benchmark?.getAlarmResult() ?: 0f)} \n\n" +
72 | "DURATION \n${DateUtils.formatElapsedTime((benchmark?.getDurationSeconds() ?: 0))} \n\n" +
73 | "Source: https://dontkillmyapp.com \n"
74 | }
75 |
76 | @SuppressLint("ApplySharedPref")
77 | fun save(context : Context, benchmark : Benchmark) {
78 | PreferenceManager.getDefaultSharedPreferences(context).edit().putString(KEY_BENCHMARK, Gson().toJson(benchmark)).commit()
79 |
80 | Log.i(TAG, "SAVE $benchmark")
81 | }
82 |
83 | @SuppressLint("ApplySharedPref")
84 | fun clear(context : Context) {
85 | PreferenceManager.getDefaultSharedPreferences(context).edit().putString(KEY_BENCHMARK, null).commit()
86 | }
87 |
88 | fun formatResult(result : Float) : String {
89 | return "${(result * 100).roundToInt()}%"
90 | // return "${DecimalFormat("0.0").format(result * 100)}%"
91 | }
92 |
93 | fun finishBenchmark(context : Context, benchmark: Benchmark) {
94 | benchmark.running = false
95 | benchmark.to = System.currentTimeMillis()
96 | save(context, benchmark)
97 |
98 | Log.i(TAG, "FINISH $benchmark")
99 | }
100 |
101 | }
102 |
103 |
104 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/urbandroid/dontkillmyapp/gui/BenchmarkView.kt:
--------------------------------------------------------------------------------
1 | package com.urbandroid.dontkillmyapp.gui
2 |
3 | import android.content.Context
4 | import android.graphics.Canvas
5 | import android.graphics.Color
6 | import android.graphics.Paint
7 | import android.graphics.Path
8 | import android.util.AttributeSet
9 | import android.view.View
10 | import com.urbandroid.dontkillmyapp.domain.Benchmark
11 | import java.util.concurrent.TimeUnit
12 |
13 | class BenchmarkView constructor(
14 | context: Context,
15 | attrs: AttributeSet? = null,
16 | defStyleAttr: Int = 0,
17 | val benchmark : Benchmark
18 | ) : View(context, attrs, defStyleAttr) {
19 |
20 | var p : Paint = Paint()
21 |
22 | val timePerLine = TimeUnit.MINUTES.toMillis(5)
23 |
24 | fun getDip(context: Context, pixel: Int): Int {
25 | return (pixel.toFloat() * context.resources
26 | .displayMetrics.density + 0.5f).toInt()
27 | }
28 |
29 | override fun onDraw(canvas: Canvas?) {
30 | super.onDraw(canvas)
31 |
32 | p.style = Paint.Style.FILL
33 | p.color = Color.parseColor("#e57373")
34 |
35 | val lines = benchmark.getDuration() / timePerLine
36 |
37 | canvas?.let {
38 | val size = getDip(context, 2).toFloat()
39 |
40 | p.color = Color.parseColor("#FB8C00")
41 |
42 | benchmark.mainEvents.forEach{
43 | val triangleSize = size * 1.5f
44 |
45 | val x = computeX(benchmark.from, benchmark.to, it, canvas, size)
46 | val y = computeY(benchmark.from, benchmark.to, it, canvas, size)
47 |
48 | canvas.drawPath(Path().apply {
49 | moveTo(x-triangleSize, y + triangleSize)
50 | lineTo(x+triangleSize, y + triangleSize)
51 | lineTo(x, y - size)
52 | lineTo(x - triangleSize, y + triangleSize)
53 | }, p)
54 | }
55 |
56 | p.color = Color.parseColor("#4CAF50")
57 |
58 | benchmark.workEvents.forEach{
59 | val x = computeX(benchmark.from, benchmark.to, it, canvas, size)
60 | val y = computeY(benchmark.from, benchmark.to, it, canvas, size)
61 |
62 | canvas.drawCircle(x, y, size, p)
63 | }
64 |
65 | p.color = Color.parseColor("#3F51B5")
66 | benchmark.alarmEvents.forEach{
67 | val x = computeX(benchmark.from, benchmark.to, it, canvas, size)
68 | val y = computeY(benchmark.from, benchmark.to, it, canvas, size)
69 | canvas.drawRect(x - size, y - size, x + size, y + size, p)
70 | }
71 |
72 |
73 | }
74 |
75 |
76 | }
77 |
78 | private fun computeX(from : Long, to : Long, ts : Long, canvas : Canvas, size : Float) : Float {
79 | return (((ts - from) % timePerLine / timePerLine.toFloat()) * (canvas.width - size)) + size
80 | }
81 |
82 | private fun computeY(from : Long, to : Long, ts : Long, canvas : Canvas, size : Float) : Float {
83 | return (((ts - from) / timePerLine) * (size * 4)) + size
84 | }
85 |
86 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/urbandroid/dontkillmyapp/gui/FloatingMaterialButtonBehavior.java:
--------------------------------------------------------------------------------
1 | package com.urbandroid.dontkillmyapp.gui;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.view.View;
6 |
7 | import androidx.coordinatorlayout.widget.CoordinatorLayout;
8 | import androidx.core.view.ViewCompat;
9 |
10 | import com.google.android.material.button.MaterialButton;
11 | import com.google.android.material.snackbar.Snackbar;
12 |
13 | public class FloatingMaterialButtonBehavior extends CoordinatorLayout.Behavior {
14 | private float mFabTranslationY;
15 |
16 | public FloatingMaterialButtonBehavior(Context context, AttributeSet attrs) {
17 | super();
18 | }
19 |
20 | @Override
21 | public boolean layoutDependsOn(final CoordinatorLayout parent, final MaterialButton child, final View dependency) {
22 | return dependency instanceof Snackbar.SnackbarLayout;
23 | }
24 |
25 | @Override
26 | public boolean onDependentViewChanged(final CoordinatorLayout parent, final MaterialButton child, final View dependency) {
27 | // Logger.logInfo("Behavior: onDependentViewChanged " + dependency);
28 | if (dependency instanceof Snackbar.SnackbarLayout) {
29 | updateFabTranslationForSnackbar(parent, child, dependency);
30 | ViewCompat.setTranslationY(child, mFabTranslationY);
31 | }
32 | return false;
33 | }
34 |
35 | @Override
36 | public void onDependentViewRemoved(final CoordinatorLayout parent, final MaterialButton child, final View dependency) {
37 | super.onDependentViewRemoved(parent, child, dependency);
38 | // Logger.logInfo("Behavior: onDependentViewRemoved " + dependency);
39 | ViewCompat.setTranslationY(child, 0);
40 | }
41 |
42 | private void updateFabTranslationForSnackbar(CoordinatorLayout parent, final MaterialButton fab, View snackbar) {
43 | mFabTranslationY = getFabTranslationYForSnackbar(parent, fab, snackbar);
44 | // Logger.logInfo("Behavior: updateFabTranslationForSnackbar " + mFabTranslationY);
45 | }
46 |
47 | private float getFabTranslationYForSnackbar(CoordinatorLayout parent, MaterialButton fab, View snackbar) {
48 | float minOffset = 0;
49 | minOffset = Math.min(minOffset, ViewCompat.getTranslationY(snackbar) - snackbar.getHeight());
50 | // Logger.logInfo("Behavior: onDependentViewRemoved " + minOffset);
51 | return minOffset;
52 | }
53 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/urbandroid/dontkillmyapp/service/BenchmarkService.kt:
--------------------------------------------------------------------------------
1 | package com.urbandroid.dontkillmyapp.service
2 |
3 | import android.app.AlarmManager
4 | import android.app.NotificationChannel
5 | import android.app.NotificationManager
6 | import android.app.PendingIntent
7 | import android.app.Service
8 | import android.content.BroadcastReceiver
9 | import android.content.Context
10 | import android.content.Intent
11 | import android.content.IntentFilter
12 | import android.os.Build
13 | import android.os.Handler
14 | import android.os.IBinder
15 | import android.os.PowerManager
16 | import android.util.Log
17 | import androidx.core.app.NotificationCompat
18 | import androidx.core.app.NotificationManagerCompat
19 | import androidx.core.content.ContextCompat
20 | import androidx.preference.PreferenceManager
21 | import com.urbandroid.dontkillmyapp.ACTION_ALARM
22 | import com.urbandroid.dontkillmyapp.ALARM_REPEAT_MS
23 | import com.urbandroid.dontkillmyapp.BENCHMARK_DURATION
24 | import com.urbandroid.dontkillmyapp.KEY_BENCHMARK_DURATION
25 | import com.urbandroid.dontkillmyapp.MAIN_REPEAT_MS
26 | import com.urbandroid.dontkillmyapp.NOTIFICATION_CHANNEL_FOREGROUND
27 | import com.urbandroid.dontkillmyapp.NOTIFICATION_CHANNEL_REPORT
28 | import com.urbandroid.dontkillmyapp.R
29 | import com.urbandroid.dontkillmyapp.ResultActivity
30 | import com.urbandroid.dontkillmyapp.TAG
31 | import com.urbandroid.dontkillmyapp.WORK_REPEAT_MS
32 | import com.urbandroid.dontkillmyapp.domain.Benchmark
33 | import java.text.DateFormat
34 | import java.util.*
35 | import java.util.concurrent.Executors
36 | import java.util.concurrent.ScheduledExecutorService
37 | import java.util.concurrent.TimeUnit
38 |
39 |
40 | class BenchmarkService : Service() {
41 |
42 | lateinit var currentBenchmark : Benchmark
43 |
44 | var wakeLock: PowerManager.WakeLock? = null
45 |
46 | lateinit var h : Handler
47 |
48 | var executor : ScheduledExecutorService? = null
49 |
50 | private val receiver = object:BroadcastReceiver() {
51 | override fun onReceive(context: Context?, intent: Intent?) {
52 | Log.i(TAG, "Broadcast ${intent?.action}")
53 |
54 | context?.let {
55 | when(intent?.action) {
56 | ACTION_ALARM -> {
57 | Log.i(TAG, "Alarm")
58 | currentBenchmark.alarmEvents.add(System.currentTimeMillis())
59 | scheduleAlarm()
60 | checkBenchmarkEnd(currentBenchmark)
61 | }
62 | else -> return
63 | }
64 | }
65 | }
66 | }
67 |
68 | private val mainRunnable = object:Runnable {
69 | override fun run() {
70 | Log.i(TAG, "Main")
71 | h.postDelayed(this, MAIN_REPEAT_MS)
72 | currentBenchmark.mainEvents.add(System.currentTimeMillis())
73 | checkBenchmarkEnd(currentBenchmark)
74 | }
75 | }
76 |
77 | override fun onBind(intent: Intent?): IBinder? {
78 | return null
79 | }
80 |
81 | override fun onCreate() {
82 | super.onCreate()
83 |
84 | Log.i(TAG, "onCreate")
85 |
86 | RUNNING = true
87 |
88 | h = Handler()
89 |
90 | val now = System.currentTimeMillis()
91 |
92 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
93 | val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
94 |
95 | val channelName = getString(R.string.benchmark);
96 | val importance = NotificationManager.IMPORTANCE_LOW;
97 | val notificationChannel = NotificationChannel(NOTIFICATION_CHANNEL_FOREGROUND, channelName, importance);
98 | notificationChannel.setShowBadge(false)
99 | notificationManager.createNotificationChannel(notificationChannel);
100 |
101 | val channelNameReport = getString(R.string.report);
102 | val importanceReport = NotificationManager.IMPORTANCE_HIGH;
103 | val notificationChannelReport = NotificationChannel(NOTIFICATION_CHANNEL_REPORT, channelNameReport, importanceReport);
104 | notificationChannelReport.setShowBadge(true)
105 | notificationManager.createNotificationChannel(notificationChannelReport);
106 | }
107 |
108 | val duration = PreferenceManager.getDefaultSharedPreferences(this).getLong(KEY_BENCHMARK_DURATION, BENCHMARK_DURATION)
109 |
110 | currentBenchmark = Benchmark.load(this) ?: Benchmark(now, now + duration).also {
111 | Benchmark.save(this, it)
112 | }
113 |
114 | Log.i(TAG, "Benchmark $currentBenchmark RUNNING ${currentBenchmark.running}")
115 |
116 | val i = Intent(this, ResultActivity::class.java)
117 | i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
118 | val pi = PendingIntent.getActivity(this, 4242, i, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
119 |
120 | val notificationBuilder = NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_FOREGROUND)
121 | .setSmallIcon(R.drawable.ic_dkma)
122 | .setChannelId(NOTIFICATION_CHANNEL_FOREGROUND)
123 | .setColor(ContextCompat.getColor(this, R.color.colorPrimary))
124 | .setContentIntent(pi)
125 | .addAction(0, getString(R.string.stop), pi)
126 | .setShowWhen(false)
127 | .setContentText(getString(R.string.running, DateFormat.getTimeInstance(DateFormat.SHORT).format(Date(currentBenchmark.from)), DateFormat.getTimeInstance(DateFormat.SHORT).format(Date(currentBenchmark.to))))
128 |
129 | if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
130 | notificationBuilder.setContentTitle(getString(R.string.app_name))
131 | }
132 |
133 | startForeground(2342, notificationBuilder.build())
134 |
135 | checkBenchmarkEnd(currentBenchmark)
136 |
137 | currentBenchmark.workEvents.add(System.currentTimeMillis())
138 |
139 | executor = Executors.newScheduledThreadPool(1)
140 | executor?.scheduleAtFixedRate(Runnable {
141 | h.post(Runnable {
142 | Log.i(TAG, "Work")
143 | currentBenchmark.workEvents.add(System.currentTimeMillis())
144 |
145 | checkBenchmarkEnd(currentBenchmark)
146 | })
147 | }, WORK_REPEAT_MS, WORK_REPEAT_MS, TimeUnit.MILLISECONDS)
148 |
149 | h.post(mainRunnable)
150 |
151 | registerReceiver(receiver, IntentFilter(ACTION_ALARM));
152 | scheduleAlarm()
153 |
154 | wakeLock =
155 | (getSystemService(Context.POWER_SERVICE) as PowerManager).run {
156 | newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "DKMA::BenchmarkWakeLock").apply {
157 | acquire()
158 | }
159 | }
160 | }
161 |
162 | private fun checkBenchmarkEnd(benchmark : Benchmark) : Boolean {
163 | Log.i(TAG, "Benchmark running ${benchmark.running}")
164 | Benchmark.save(this, currentBenchmark)
165 |
166 | if (!benchmark.running) {
167 | Log.i(TAG, "Benchmark not running, stop service")
168 | stopSelf()
169 | return true
170 | }
171 | if (System.currentTimeMillis() > benchmark.to) {
172 | Log.i(TAG, "Benchmark completed, finishing")
173 | Benchmark.finishBenchmark(this, benchmark)
174 | showFinishNotification()
175 | stopSelf()
176 | return true
177 | }
178 | return false
179 | }
180 |
181 | private fun showFinishNotification() {
182 | val i = Intent(this, ResultActivity::class.java)
183 | i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
184 | val pi = PendingIntent.getActivity(this, 4242, i, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
185 |
186 | val notificationBuilder = NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_FOREGROUND)
187 | .setSmallIcon(R.drawable.ic_dkma)
188 | .setChannelId(NOTIFICATION_CHANNEL_REPORT)
189 | .setColor(ContextCompat.getColor(this, R.color.colorPrimary))
190 | .setContentIntent(pi)
191 | .setAutoCancel(true)
192 | .setShowWhen(false)
193 | .setContentText(getString(R.string.finished))
194 |
195 | if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
196 | notificationBuilder.setContentTitle(getString(R.string.app_name))
197 | }
198 |
199 | with(NotificationManagerCompat.from(this)) {
200 | notify(4242, notificationBuilder.build())
201 | }
202 |
203 | }
204 |
205 | private fun getAlarmIntent() : PendingIntent {
206 | val i = Intent(ACTION_ALARM)
207 | i.setPackage(packageName)
208 | return PendingIntent.getBroadcast(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
209 | }
210 |
211 | fun scheduleAlarm() {
212 | Log.i(TAG, "Scheduling at alarm ${Date(System.currentTimeMillis() + ALARM_REPEAT_MS)}")
213 | when {
214 | Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> {
215 | (getSystemService(Context.ALARM_SERVICE) as AlarmManager).setExactAndAllowWhileIdle(
216 | AlarmManager.RTC_WAKEUP,
217 | System.currentTimeMillis() + ALARM_REPEAT_MS,
218 | getAlarmIntent()
219 | )
220 | }
221 | Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT -> {
222 | (getSystemService(Context.ALARM_SERVICE) as AlarmManager).setExact(
223 | AlarmManager.RTC_WAKEUP,
224 | System.currentTimeMillis() + ALARM_REPEAT_MS,
225 | getAlarmIntent()
226 | )
227 | }
228 | else -> {
229 | (getSystemService(Context.ALARM_SERVICE) as AlarmManager).set(
230 | AlarmManager.RTC_WAKEUP,
231 | System.currentTimeMillis() + ALARM_REPEAT_MS,
232 | getAlarmIntent()
233 | )
234 | }
235 | }
236 | }
237 |
238 | private fun cancelAlarm() {
239 | (getSystemService(Context.ALARM_SERVICE) as AlarmManager).cancel(getAlarmIntent())
240 | }
241 |
242 | override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
243 | return START_STICKY
244 | }
245 |
246 | override fun onDestroy() {
247 | super.onDestroy()
248 |
249 | unregisterReceiver(receiver)
250 |
251 | cancelAlarm()
252 |
253 | h.removeCallbacks(mainRunnable)
254 |
255 | //supervisorJob.cancelChildren()
256 |
257 | wakeLock?.release()
258 |
259 | executor?.shutdown()
260 |
261 | RUNNING = false
262 | }
263 |
264 | companion object {
265 |
266 | var RUNNING : Boolean = false
267 |
268 | fun start(context : Context) {
269 | Log.i(TAG, "Starting service")
270 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
271 | context.startForegroundService(Intent(context, BenchmarkService::class.java))
272 | } else {
273 | context.startService(Intent(context, BenchmarkService::class.java))
274 | }
275 | }
276 |
277 | fun stop(context : Context) {
278 | context.stopService(Intent(context, BenchmarkService::class.java))
279 | }
280 | }
281 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_alarm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-hdpi/ic_alarm.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-hdpi/ic_main.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_work.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-hdpi/ic_work.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_alarm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-mdpi/ic_alarm.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-mdpi/ic_main.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_work.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-mdpi/ic_work.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/rate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-nodpi/rate.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_alarm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-xhdpi/ic_alarm.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-xhdpi/ic_main.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_work.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-xhdpi/ic_work.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_alarm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-xxhdpi/ic_alarm.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-xxhdpi/ic_main.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_work.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/drawable-xxhdpi/ic_work.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_delete_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_dkma.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_info_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_play_circle_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/logo.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
14 |
18 |
22 |
26 |
30 |
34 |
38 |
42 |
46 |
50 |
54 |
58 |
62 |
63 |
--------------------------------------------------------------------------------
/app/src/main/res/layout-v21/view_report.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
12 |
13 |
21 |
22 |
28 |
29 |
34 |
35 |
41 |
52 |
53 |
60 |
61 |
62 |
68 |
79 |
80 |
87 |
88 |
89 |
90 |
96 |
97 |
108 |
109 |
116 |
117 |
118 |
119 |
120 |
121 |
128 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_rate.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
13 |
14 |
18 |
19 |
20 |
21 |
29 |
30 |
39 |
40 |
41 |
42 |
47 |
54 |
61 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_result.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
20 |
27 |
28 |
29 |
30 |
39 |
40 |
41 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 |
26 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/view_fab.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/view_report.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
12 |
13 |
20 |
21 |
27 |
28 |
33 |
34 |
40 |
50 |
51 |
57 |
58 |
59 |
65 |
75 |
76 |
82 |
83 |
84 |
85 |
91 |
92 |
102 |
103 |
109 |
110 |
111 |
112 |
113 |
114 |
121 |
122 |
123 |
124 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/view_toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_main.xml:
--------------------------------------------------------------------------------
1 |
33 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_result.xml:
--------------------------------------------------------------------------------
1 |
5 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v31/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-hdpi/ic_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-mdpi/ic_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-xhdpi/ic_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-xxhdpi/ic_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-xxxhdpi/ic_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values-cs/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Začít měřit
6 | Vypnout měření
7 | Měření
8 | Měření běží (%1$s - %2$s) vypněte zde.
9 | Měření skončilo, ukaž výsledky.
10 | Měření již běží
11 | Stop
12 | Vymazat
13 | Vlákna
14 | Alarm
15 | Hlavní
16 | Sdílet
17 | Sdílet s
18 | Report
19 | Doba
20 | Pozor
21 | Nenabíjejte telefon a zkuste s ním nepracovat po celou dobu měření.
22 | Zrušit
23 | OK
24 | Celkem
25 |
26 | - 1 hodina
27 | - 2 hodiny
28 | - 3 hodiny
29 | - 4 hodiny
30 | - 5 hodin
31 | - 6 hodin
32 | - 7 hodin
33 | - 8 hodin
34 |
35 | Jak to funguje
36 | Meření nastartuje službu na popředí, udržuje CPU zapnuté a nastaví opakující se úlohy na hlavním vlákně (po 10ti sekundách) a na dalších vláknech (po 10ti sekundách) a alarmy (AlarmManager.setExactAndAllowWhileIdle po 10ti minutách). Na konci se spočítá skóre jako uskutečněné proti očekávaným.\n\nHodnoty blízko 100% jsou dobrý výsledek - žádná nestandardní omezení nejspíš nejsou momentálně aktivní. Zkuste měření za týden opakovat, protože někteří výrobci zapínaji zabijáky aplikací až po nějaké době co není aplikace používána.\n\nGRAF\n\nKaždý řádek reprezentuje 5 minut. Ideálně vidíte v grafu 30 koleček a trojúhelníků na řádek a jeden čtverec na každém druhém řádku. Větší bílá místa znamenají problém - Vaše aplikace nemusí pracovat správně pokud nezměníte nastavení telefonu.\n\nPro více informací se podívejte na https://dontkillmyapp.com a nebo přímo do zdrojáku na https://github.com/urbandroid-team/dontkillmy-app
37 | Kontaktujte podporu
38 | Řekněte to ostatním
39 | DontKillMyApp měří jak fungují procesy v pozadí na Vašem telefonu, aby Vaše aplikace fungovali správně.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
40 | Prosím ohodnoťte nás
41 | Hodnocení
42 | Nikdy
43 | Později
44 | Zdrojový kód
45 | Chceme, aby aplikace fungovaly i na telefonech výrobců, kteří upřednostňují baterii před užitečností aplikací.\n\nPomozte nám zviditelnit tento problém. Nejlépe tím, že ohodnotíte tuto aplikaci, která je zdarma a má otevřený zdrojový kód na Obchodě Play a napíšete nám zkušenosti, jak Vám aplikace pomohla.\n\nDěkujeme za Vaši podporu a důvěru, že nám pomáháte zlepšovat svět Androidích zařízení.
46 | Nech apky žít
47 | Oficiální aplikace projektu DontKillMyApp je zde - konečně můžete nechat apky žít i na Vašem telefonu i když o zrovna neni Pixel.
48 |
49 | Aplikace Vám pomůže nastavit telefon tak, aby aplikace začali být užitečné i když zrovna nedržíte telfon v ruce.
50 |
51 | Podívejte se jak si vede Váš telefoin ve sruvnaní s ostatními díky funkci Benchmark.
52 |
53 | Vlatnosti:
54 | - DKMA Benchmark: změřte si jak agresivně zabíjí Váš telefon užitečné aplikace
55 | - Návody: podívejte se jak nastavit telefon, aby nechal aplikace žít
56 | - Umožněte změnu: nasdílejte zvoj report s projketem DKMA, abychom veděli jak si jednotlivé telefony vedou
57 |
58 | Nejprve změřtre telefon, pokud je Vaše skóre nízké, udělejte změny podle návodu a opakujet měření, abyste ověřili, že se nastavení podařilo.
59 |
60 |
61 | Projekt DKMA vyvíjejí a udržují dobrovolníci, kterým není jedno v jakém stavu je Androidí ekosystém a usilují o jeho zlepšení. Tato aplikace má otevřený zdrojový kód, který můžete nalézt na https://github.com/urbandroid-team/dontkillmy-app.
62 | Povolit přesné plánování poplachu
63 | Prosím, dovolte nám naplánovat přesné alarmy a správně otestujte zpracování pozadí založeného na zařízení Yoru.
64 | Něco se pokazilo.
65 | Benchmark běží
66 |
--------------------------------------------------------------------------------
/app/src/main/res/values-da/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Start kontrol
6 | Stop kontrol
7 | Kontrollér
8 | Kontrol kører (%1$s - %2$s), tryk for at stoppe.
9 | Kontrol afsluttet, tryk for at se resultatet
10 | Kontrol kører allerede
11 | Stop
12 | Slet
13 | Arbejde
14 | Alarm
15 | Main
16 | Del
17 | Del med
18 | Rapportér
19 | Varighed
20 | Advarsel
21 | Undlad venligst at oplade din telefon - og at bruge den - under hele kontrollen.
22 | Afbryd
23 | OK
24 | Total
25 |
26 | - 1 time
27 | - 2 timer
28 | - 3 timer
29 | - 4 timer
30 | - 5 timer
31 | - 6 timer
32 | - 7 timer
33 | - 8 timer
34 |
35 |
36 | - DontKillMyApp.com
37 | - E-mail
38 | - Anden måde...
39 |
40 | Hvordan virker det?
41 | Kontrollen starter en forgrunds-service som forhindrer skærmen i at låse, og igangsætter gentagne opgaver i hovedtråden (hver 10. sekund), en brugerdefineret tråd (også hver 10. sekund) og planlægger gentagne alarmer ved hjælp af AlarmManager.setExactAndAllowWhileIdle (hver 10. minut). Der beregnes en score ved at sammenligne det afviklede med det forventede.\n\nEn score tæt på 100% er en god score - ikke-standard batteri-optimeringer anvendes pt. ikke. Det kan være en god idé at gentage testen efter nogle uger, da nogle telefonproducenter lægger begrænsninger på apps som ikke har været i brug i en længere periode.\n\nGRAFEN\n\nHver række i grafen repræsenterer 5 minutter. Helt ideelt burde der være 30 cirkler og trekanter på hver linje og en kasse på hver anden linje. Større blanke områder indikerer at der er et problem - dine apps virker formodentlig ikke som forventet, med mindre du ændrer din telefons indstillinger.\n\n For flere detaljer kan koden til app\'en ses på https://github.com/urbandroid-team/dontkillmy-app
42 | Kontakt support
43 | Fortæl det til andre
44 | DontKillMyApp Kontrol tjekker din telefons afvikling af apps i baggrunden, for at få din telefon til at fungere korrekt.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | Bedøm os venligst!
46 | Bedøm
47 | Aldrig
48 | Senere
49 | Kildekode
50 | Vi ønsker at vores apps virker på telefoner, hvis producent fortrækker batterilevetid over funktionalitet.\n\nDen bedste måde du kan hjælpe med at udbrede kendskabet til dette gratis open-source-tool er ved at bedømme det i Play Butikken og skrive en kommentar.\n\nTusind tak fordi du hjælper os med at gøre Android til et bedre sted!
51 | Hjælp med at oversætte app\'en
52 | Få app\'en til at virke
53 | Den officielle DontKillMyApp-app er her - få dine apps til at fungere korrekt, selvom du ikke ejer en Pixel.
54 |
55 | Hjælper dig med at indstille din telefons baggrunds-programmer så dine apps kan virke for DIG, selv når du ikke kigger på en tændt skærm.
56 |
57 | Se hvordan din telefon rangerer og afprøv forskellige indstillinger med DontKillMyApp-kontrollen.
58 |
59 | Funktioner:
60 | • DKMA-kontrol: Mål hvor aggresivt din telefon stopper baggrunds-apps
61 | • Guider: Få konkrete anvisninger på at undgå de fleste begrænsninger for baggrundsprocesser
62 | • Gør en forskel:️ Hjælp smart-phones med at være smarte ved at dele dine resultater med dontkillmyapp.com
63 |
64 | DontKillMyApp er et kontrolværktøj som undersøger hvor godt din telefon understøtter baggrundsprocesser. Du kan kontrollere før du konfigurerer din telefons indstillinger. Gennemgå derefter vores setup-guides og kontrollér igen for at se hvor meget din telefon har slækket på apps der kører i baggrunden.
65 |
66 | Du kan sende din rapport direkte fra app\'en til udviklerne hos dontkillmyapp.com-hjemmesiden, som samler alle resultater til en global score.
67 |
68 | Hvordan virker kontrollen? (Teknisk forklaring!)
69 |
70 | App\'en starter en service-app som låser skærmen til at være tændt og planlægger gentagne opgaver i hovedtråden, en brugerdefineret tråd og planlægger gentagne alarmer (AlarmManager.setExactAndAllowWhileIdle). Derefter beregnes eksekveret i forhold til forventet. Det er det hele!
71 |
72 | For flere detaljer, tjek koden. App\'en er open-source, og kan findes på https://github.com/urbandroid-team/dontkillmy-app
73 |
74 | Særlig tak til Doki (github.com/doubledotlabs/doki).
75 | Tillad nøjagtig alarmplanlægning
76 | Tillad os at planlægge nøjagtige alarmer for korrekt at teste Yoru-enhedsalarmbaseret baggrundsbehandling.
77 | Noget gik galt.
78 | Benchmark kører
79 |
--------------------------------------------------------------------------------
/app/src/main/res/values-de/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Überprüfung starten
6 | Überprüfung stoppen
7 | Überprüfen
8 | Überprüfung läuft (%1$s - %2$s) zum Stoppen drücken.
9 | Überprüfung beendet, für Ergebnisse drücken.
10 | Überprüfung läuft bereits
11 | Stop
12 | Löschen
13 | Arbeit
14 | Alarm
15 | Main
16 | Teilen
17 | Teilen mit
18 | Ergebnis
19 | Dauer
20 | Achtung
21 | Bitte das Telefon vom Ladegerät fernhalten und möglichst während der gesamten Überprüfung nicht verwenden.
22 | Abbrechen
23 | OK
24 | Gesamt
25 |
26 | - 1 Stunde
27 | - 2 Stunden
28 | - 3 Stunden
29 | - 4 Stunden
30 | - 5 Stunden
31 | - 6 Stunden
32 | - 7 Stunden
33 | - 8 Stunden
34 |
35 |
36 | - DontKillMyApp.com
37 | - E-Mail
38 | - Anders
39 |
40 | Wie es funktioniert
41 | Die Überprüfung startet einen Vordergrunddienst mit einer Wecksperre und plant sich wiederholende Aufgaben für den Hauptthread (alle 10 Sekunden), einen benutzerdefinierten Thread-Executor (alle 10 Sekunden) und plant regelmäßige Alarme mit AlarmManager.setExactAndAllowWhileIdle (alle 10 Minuten). Anschließend wird die Punktzahl berechnet, indem die ausgeführten mit den erwarteten Werten verglichen werden.\n\nWerte nahe 100% sind gute Ergebnisse - nicht standardmäßige Batterieoptimierungen werden dann nicht angewendet. Trotzdem ist es gut, den Test in einer Woche zu wiederholen, da einige Betriebssysteme möglicherweise Beschränkungen für Apps anwenden, die für eine Weile nicht verwendet werden. \n\nDIE GRAFIK\n\nJede Zeile in der Grafik entspricht 5 Minuten. Idealerweise sehen Sie 30 Kreise und Dreiecke auf jeder Linie und ein Quadrat pro zweiter Linie. Größere Bereiche mit Leerzeichen weisen auf ein Problem hin. Ihre Apps funktionieren dann möglicherweise nicht wie vorgesehen, wenn Sie die Einstellungen Ihres Telefons nicht ändern.\n\nWeitere Informationen finden Sie im App-Code unter https://github. com/urbandroid-team/dontkillmy-app
42 | Entwickler kontaktieren
43 | Weitersagen
44 | DontKillMyApp Überprüfung kontrolliert das Hintergrundverhalten des Telefons, damit Apps auf demTelefon ordnungsgemäß funktionieren.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | Bitte bewerte uns!
46 | Bewertung
47 | Nie
48 | Später
49 | Quellcode
50 | Wir möchten, dass Apps auch auf Telefonen funktionieren, deren Hersteller die Akkulaufzeit der Funktionalität vorziehen. \n\nDie beste Möglichkeit, dieses Projekt öffentlich zu machen, besteht darin, dieses kostenlose Open-Source-Tool im Play Store zu bewerten und zu kommentieren. \n\nVielen Dank für die Unterstützung, das Android-System zu einem besseren Ort zu machen!
51 | Hilf bei der Übersetzung
52 | Make apps work
53 | Die offizielle DontKillMyApp-App ist da - sorgen Sie dafür, dass Apps endlich richtig funktionieren, auch wenn Sie kein Pixel besitzen.
54 |
55 | Hilft Ihnen beim Einrichten Ihrer Telefon-Hintergrundaufgaben, damit Ihre Apps auch endlich für SIE richtig funktionieren können, auch wenn Sie gerade nicht auf den Bildschirm schauen.
56 |
57 | Sehen Sie, wie es Ihrem Telefon geht, und testen Sie verschiedene Einstellungen mit der DontKillMyApp-Überprüfung.
58 |
59 | Eigenschaften:
60 | • DKMA-Überprüfung: Messen Sie, wie aggressiv Ihr Telefon Hintergrund-Apps schließt
61 | • Anleitungen: Erhalten Sie detaillierte Schritt für Schritt Anleitungen, um die meisten Einschränkungen des Hintergrundprozesses zu überwinden
62 | • Nehmen Sie Änderungen selbst vor: ️Helfen Sie Smartphones, intelligent zu bleiben, indem Sie Ihren Überprüfungs-Bericht an dontkillmyapp.com weitergeben
63 |
64 | DontKillMyApp ist ein Überprüfungs-Tool, mit dem Sie feststellen können, wie gut Ihr Telefon die Hintergrundverarbeitung unterstützt. Sie können vor der Einrchtung Ihres Telefons zunächst überprüfen, dann die Einstellungs-Anleitungen durchgehen und erneut eine Überprüfung durchführen, um festzustellen, wie stark Ihr Telefon im Hintergrund nachgelassen hat.
65 |
66 | Sie können Ihren Bericht über die App an die Betreuer der Website dontkillmyapp.com weitergeben, die ihn zusammenstellen und die negative Gesamtpunktzahl darauf aufbauen.
67 |
68 | Wie funktioniert ie Überprüfung? (Technisch!)
69 |
70 | Die App startet einen Vordergrunddienst mit einer Wecksperre und plant sich wiederholende Aufgaben im Hauptthread, einem benutzerdefinierten Thread-Executor, und plant regelmäßige Alarme (AlarmManager.setExactAndAllowWhileIdle). Dann berechnet es die Ausführungen gegen die Erwartung. Das ist alles!
71 |
72 | Weitere Details finden Sie im Code. Die App ist Open-Source verfügbar unter https://github.com/urbandroid-team/dontkillmy-app
73 |
74 | Besonderer Dank geht an Doki (github.com/doubledotlabs/doki).
75 | Ermöglichen Sie eine genaue Alarmplanung
76 | Bitte erlauben Sie uns, genaue Alarme zu planen, um die alarmbasierte Hintergrundverarbeitung von YORU-Geräten ordnungsgemäß zu testen.
77 | Etwas ist schief gelaufen.
78 | Benchmark läuft
79 |
--------------------------------------------------------------------------------
/app/src/main/res/values-es/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Iniciar análisis
6 | Detener analisis
7 | Análisis
8 | Análisis en progreso (%1$s - %2$s) toca para detenerlo.
9 | El análisis finalizó, toca para ver los resultados.
10 | El análisis se está ejecutando ahora mismo.
11 | Parar
12 | Reiniciar
13 | Trabajando...
14 | Alarma
15 | Principal
16 | Compartir
17 | Compartir con:
18 | Reportar
19 | Duración
20 | ¡Atención!
21 | Por favor, desconecta el cargador, y no utilices el smartphone mientras se ejecuta el análisis.
22 | Cancelar
23 | OK
24 | Total
25 |
26 | - 1 hora
27 | - 2 horas
28 | - 3 horas
29 | - 4 horas
30 | - 5 horas
31 | - 6 horas
32 | - 7 horas
33 | - 8 horas
34 |
35 |
36 | - DontKillMyApp.com
37 | - Correo
38 | - Otros
39 |
40 | ¿Cómo funciona?
41 | El análisis ejecuta un servicio en primer plano con un bloqueo de activación y programa tareas repetitivas en el hilo principal (cada 10 segundos). Una ejecución de un hilo personalizado (cada 10 s) y programa alarmas regulares usando AlarmManager.setExactAndAllowWhileIdle (Cada 10 minutos).
42 | Luego calcula la puntuación comparando ejecución vs. expectativa.\n\nLas puntuaciones cercanas al 100% son buenos resultados; las optimizaciones de batería no estándar no se aplican en este momento. Aunque es bueno repetir la prueba en una semana, ya que algunos OEM pueden aplicar límites a las aplicaciones que no se utilizan durante un tiempo.\n\nEL ANÁLISIS\n\nCada fila del gráfico representa 5 minutos. Lo ideal es que veas 30 círculos y triángulos en cada línea y un cuadrado cada segunda línea. Las regiones más grandes de espacios en blanco indican un problema: es posible que tus aplicaciones no funcionen como se esperaba si no cambias la configuración de tu teléfono.\n\n\Si eres programador puedes ver el código fuente de nuestra aplicacion por aquí: https://github.com/urbandroid-team/dontkillmy-app
43 | Contactar al soporte
44 | ¡Cuéntaselo a otras personas!
45 | El análisis de DontKillMyApp comprueba el procesamiento en segundo plano de su teléfono para que las aplicaciones de tu teléfono funcionen correctamente.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
46 | ¡Califícanos!
47 | Calificar
48 | Nunca
49 | Más tarde
50 | Código fuente
51 | Queremos hacer que tus aplicaciones se ejecuten siempre, incluso en smartphones los cuales los fabricantes prefieren que ahorres batería en vez de que tus aplicaciones sigan ejecutándose en segundo plano.\n\nLo mejor que podemos hacer para que este proyecto esté al alcance de todos es que (por favor) comentes y califiques esta aplicación.\n\n¡Muchas gracias por hacer que el ecosistema de Android sea un mejor lugar para todos!
52 | ¡Ayuda a traducir la app!
53 | Haz que tus aplicaciones funcionen
54 | DonKillMyApp finalmente llego - Haz que tus aplicaciones funcionen al 100% sin necesidad de ser dueño de un Google Pixel.
55 |
56 | Te ayudamos a que tu aplicacion se siga ejecutando en segundo plano.
57 |
58 | Observa como y realiza pruebas con nuestro efectivo analisis de aplicaciones.
59 |
60 | Caracteristicas:
61 |
62 | Analisis DKMA: Mide qué tan agresivamente está tu teléfono cerrando aplicaciones en segundo plano
63 | GUIA: Te ayudamos paso a paso a quitar las restricciones de tu celular
64 | Haz la diferencia: Ayudanos a que tu Smartphone, siga siendo inteligente, envia tus reportes a dontkillmyapp.com
65 |
66 | DonKillMyApp es una herramienta que analisa los procesos en segundo plano. Puedes analisar, luego paso a paso te indicaremos como quitar
67 | la restriccion de tu celular para que tus aplicaciones no se cierren automaticamente.
68 |
69 | Puedes compartir el analisis de tu caso desde la aplicacion o a traves de nuestro website dontkillmyapp.com, con esto ayudaras a otros
70 | a que no tengan el mismo problema.
71 |
72 | Como funciona nuestro analisis. (Tecnicamente)
73 |
74 | La aplicación inicia un servicio en primer plano con un bloqueo de activación y programa tareas repetitivas en el hilo principal, un ejecutor de hilo personalizado y programa alarmas regulares (AlarmManager.setExactAndAllowWhileIdle). Calculo vs. expectativa. Listo!
75 |
76 | Para mas detalles puedes ver el codigo fuente desde aqui https://github.com/urbandroid-team/dontkillmy-app
77 |
78 | Gracias a Doki (github.com/doubledotlabs/doki).
79 | Permitir la programación exacta de la alarma
80 | Permítanos programar alarmas exactas para probar correctamente el procesamiento de fondo basado en alarmas del dispositivo YORU.
81 | Algo salió mal.
82 | Benchmark se está ejecutando
83 |
--------------------------------------------------------------------------------
/app/src/main/res/values-fa/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | شروع سنجش
6 | توقف سنجش
7 | سنجش
8 | سنجش در حال اجراست (%1$s - %2$s) برای توقف ضربه بزنید.
9 | سنجش پایان یافت، برای دیدن نتایج ضربه بزنید
10 | سنجش در حال حاضر در حال اجراست
11 | توقف
12 | پاک
13 | عمل
14 | زنگ هشدار
15 | اصلی
16 | اشتراک گذاری
17 | اشتراک گذاری با
18 | گزارش
19 | مدت زمان
20 | هشدار
21 | لطفاً تلفن خود را از شارژر دور نگه دارید و سعی کنید در کل سنجش از آن استفاده نکنید.
22 | لغو
23 | باشه
24 | مجموع
25 |
26 | - ۱ ساعت
27 | - ۲ ساعت
28 | - ۳ ساعت
29 | - ۴ ساعت
30 | - ۵ ساعت
31 | - ۶ ساعت
32 | - ۷ ساعت
33 | - ۸ ساعت
34 |
35 |
36 | - DontKillMyApp.com
37 | - ایمیل
38 | - سایر
39 |
40 | چگونه کار میکند
41 | معیار یک سرویس پیش زمینه را با قفل بید شروع می کند و کارهای تکراری را در موضوع اصلی (هر۱۰ ثانیه)، یک مجری موضوع سفارشی (هر۱۰ ثانیه) انجام می دهد و آلارم های منظم را با استفاده از مدیر آلارم گوشی (هر ۱۰ دقیقه) برنامه ریزی می کند. این ایده خوبی است که تست را در یک هفته تکرار کنید زیرا ممکن است برخی برنامه های نصب شده محدودیت هایی را برای برنامه هایی اعمال کنند که برای مدتی استفاده نمی شوند. هر سطر در نمودار ۵ دقیقه را نشان می دهد. در حالت ایده آل ۳۰ دایره و مثلث را در هر خط و یک مربع در هر خط دومی مشاهده می کنید.مناطق بزرگتر از فضای سفید یک مشکل را نشان می دهد - اگر تنظیمات تلفن خود را تغییر ندهید ممکن است برنامه های شما مطابق آنچه در نظر گرفته شده کار نکنند. برای اطلاعات بیشتر کد برنامه را در https://github بررسی کنید.
42 | ارتباط با پشتیبانی
43 | معرفی به دیگران
44 | DontKillMyApp ، پردازش پس زمینه تلفن را بررسی می کند تا برنامه های روی تلفن شما به درستی کار کنند.https://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | لطفا به ما رای دهید!
46 | رای دادن
47 | هرگز
48 | بعدا
49 | کد منبع
50 | ما می خواهیم برنامه ها را حتی در تلفن هایی اجرایی کنیم که سازندگان باتری را بیش از عملکرد ترجیح می دهند. بهترین روشی که به شما در بهبود این پروژه کمک می کند این است که این ابزار رایگان و متن باز را در فروشگاه Play ارزیابی و بررسی کنید. خیلی ممنون برای کمک به ما در ساختن اکوسیستم اندرویدی به مکانی بهتر!
51 | برنامه ریزی دقیق زنگ هشدار
52 | لطفاً به ما اجازه دهید هشدارهای دقیقی را برای آزمایش صحیح پردازش پس زمینه مبتنی بر زنگ دستگاه YORU برنامه ریزی کنیم.
53 | مشکلی پیش آمد
54 | معیار در حال اجرا است
55 |
--------------------------------------------------------------------------------
/app/src/main/res/values-fil/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Simulan ang pagsusulit
6 | Ihinto ang pagsusulit
7 | Pagsusulit
8 | Umaandar ang pagsusulit (%1$s - %2$s) pindutin upang ihinto.
9 | Tapos na ang pagsusulit, pindutin upang makita ang resulta
10 | Tumatakbo na ang pagsusulit
11 | Hinto
12 | Alisin
13 | Trabaho
14 | Alarma
15 | Pangunahin
16 | Ibahagi
17 | Ibahagi sa/kay
18 | Ulat
19 | Tagal
20 | Babala
21 | Huwag i-charge ang iyong telepono o gamitin ito habang umaandar ang pagsusulit.
22 | Kanselahin
23 | OK
24 | Kabuuan
25 |
26 | - 1 oras
27 | - 2 oras
28 | - 3 oras
29 | - 4 na oras
30 | - 5 oras
31 | - 6 na oras
32 | - 7 oras
33 | - 8 oras
34 |
35 |
36 | - DontKillMyApp.com
37 | - Email
38 | - Iba pa
39 |
40 | Paano ito gumagana
41 | Gumagawa ang pagsusulit na ito ng isang serbisyo sa foreground na may wake lock at iniiskedyul ang mga paulit-ulit na gawain sa pangunahing thread (bawat 10s), isang custom thread executor (bawat 10s), at nagtatakda ng mga alarma gamit ang AlarmManager.setExactAndAllowWhileIdle (bawat 10 minuto). Pagkatapos ay kukuwentahin nito ang puntos sa pamamagitan ng pagkumpara sa kung ilang gawain ang matagumpay na napaandar vs. kung ilang gawain ang inasahang mapaaandar.\n\nMainam kung malapit sa 100% ang puntos na nakuha mo - hindi pa tumatakbo sa ngayon ang mga \'di-standard na optimisasyon sa baterya. Ngunit mainam kung uulitin mo ang pagsusulit pagkatapos ng isang linggo sapagkat may ilang OEM na nagpapataw ng limitasyon sa mga app na hindi nagamit nang ilang araw.\n\nANG GRAPH\n\nInirerepresenta ng bawat hilera ng graph ang 5 minuto. Maganda kung nakakakita ka ng 30 bilog at tatsulok sa bawat isang hilera at isang parisukat bawat dalawang hilera. May problema kung marami kang nakikitang puting espasyo o patlang - maaaring hindi gumana tulad ng inaasahan ang iyong mga app kung hindi mo babaguhin ang setting ng iyong telepono.\n\nPara sa karagdagang impormasyon, sumangguni sa https://github.com/urbandroid-team/dontkillmy-app
42 | Kausapin ang suporta
43 | Ipaalam sa iba
44 | ¡Ha llegado DontKillMyApp! - Haz que tus aplicaciones funcionen al 100% sin necesidad de ser dueño de un Google Pixel.
45 |
46 | Te ayudamos a que tus aplicaciones se sigan ejecutando en segundo plano.
47 |
48 | Observa cómo y realiza pruebas con nuestro efectivo análisis de aplicaciones.
49 |
50 | Características:
51 |
52 | Análisis DKMA: Mide qué tan agresivamente está tu teléfono cerrando aplicaciones en segundo plano.
53 |
54 | Guía: Te ayudamos paso a paso a quitar las restricciones de tu smartphone.
55 |
56 | Marca la diferencia: Ayúdanos a que tu smartphone siga siendo inteligente y envía tus reportes a dontkillmyapp.com.
57 |
58 | DontKillMyApp es una herramienta que analiza los procesos en segundo plano. Puedes analizar y luego paso a paso te indicaremos cómo quitar las restricciones de tu smartphone para que tus aplicaciones no se cierren automáticamente.
59 |
60 | Puedes compartir el análisis de tu caso desde la aplicación o a traves de nuestra página web dontkillmyapp.com, con esto ayudarás a otros usuarios a que no tengan el mismo problema.
61 |
62 | ¿Cómo funciona nuestro análisis? (Técnicamente)
63 |
64 | La aplicación inicia un servicio en primer plano con un bloqueo de activación y programa tareas repetitivas en el hilo principal, un ejecutor de hilo personalizado y programa alarmas regulares (AlarmManager.setExactAndAllowWhileIdle). Calcula la puntuación comparando ejecución vs. expectativa y ¡listo!
65 |
66 | Para más detalles, puedes ver el código fuente desde aquí: https://github.com/urbandroid-team/dontkillmy-app
67 |
68 | Gracias a Doki (github.com/doubledotlabs/doki).
69 | Salli tarkan hälytyksen aikataulun
70 | Anna meidän ajoittaa tarkat hälytykset testataksesi Yoru-laitteen hälytyspohjaisen taustakäsittelyn oikein.
71 | Jotain meni pieleen.
72 | Vertailuarvo on käynnissä
73 |
--------------------------------------------------------------------------------
/app/src/main/res/values-fr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Commencer l\'évaluation
6 | Arrêter l\'évaluation
7 | Évaluation
8 | Évaluation en cours (%1$s - %2$s) appuyez pour arrêter.
9 | Évaluation terminée, appuyez pour voir les résultats
10 | Évaluation déjà en cours
11 | Arrêter
12 | Effacer
13 | Travail
14 | Alarme
15 | Principal
16 | Partager
17 | Partager avec
18 | Rapport
19 | Durée
20 | Attention
21 | Veuillez ne pas branchez pas votre téléphone et essayez de ne pas l\'utiliser pendant l\'évaluation.
22 | Annuler
23 | OK
24 | Total
25 |
26 | - 1 heure
27 | - 2 heures
28 | - 3 heures
29 | - 4 heures
30 | - 5 heures
31 | - 6 heures
32 | - 7 heures
33 | - 8 heures
34 |
35 |
36 | - DontKillMyApp.com
37 | - Courriel
38 | - Autre
39 |
40 | Fonctionnement
41 | L\'évaluation lance un service en arrière-plan avec un verrouillage actif et planifie des taches répétitives dans le fil principal (toutes les 10 secondes), un lanceur de fil personnalisé (toutes les 10 secondes), et planifie des alarmes régulièrement en utilisant AlarmManager.setExactAndAllowWhileIdle (toutes les 10 minutes). Ensuite elle calcule le score en comparant ce qui a été lancé et ce qui est attendu. \n\nLes scores proches de 100% sont de bons résultats – les optimisations de batterie non-standard ne sont pas utilisées. Bien qu\'il est bon de répéter le test dans une semaine, vu que certains OEM peuvent appliquer des limites inactives pendant un certain temps.\n\nLE GRAPHIQUE\n\nChaque colonne dans le graphique représente 5 minutes. Idéalement vous verrez 30 cercles par ligne et un carré toutes les 2 lignes. De plus larges zones blanches indiquent un problème – votre application pourrait ne pas marcher comme prévu si vous ne changez pas les paramètres de votre smartphone. Pour plus d\'informations, allez voir le code source de l\'application sur https://github.com/urbandroid-team/dontkillmy-app
42 | Contacter le support
43 | Partager
44 | L\'évaluation de DontKillMyApp contrôle les processus en arrière-plan pour mieux faire fonctionner les applications de votre smartphone.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | Notez-nous, s\'il vous plaît !
46 | Noter
47 | Jamais
48 | Plus tard
49 | Code source
50 | Nous voulons faire des applications qui fonctionnent même sur les smartphones dont leurs fabricants privilégient la batterie au fonctionnement. \n\nLa meilleure façon de faire connaître ce projet est de noter et commenter cet outil gratuit et libre sur le Play Store. \n\nNous vous remercions beaucoup pour nous aider à rendre Android meilleur !
51 | Aidez à traduire l\'application
52 | Faire fonctionner l\'application
53 | L\'application officielle DontKillMyApp est disponible – faites fonctionner vos applications normalement, même si vous n\'utilisez pas un Pixel.
54 |
55 | L\'application vous aide à paramétrer les tâches d\'arrière-plan de votre téléphone, afin que vos applications puissent fonctionner pour VOUS même si vous n\'êtes par sur votre écran.
56 |
57 | Regardez le fonctionnement de votre téléphone et testez différents paramètres avec l\'évaluation DontKillMyApp.
58 |
59 | Inclus :
60 | – Evaluation DKMA : Mesurez le niveau d\'aggressivité de votre téléphone pour fermer les applications d\'arrière-plan ;
61 | – Guides : Des étapes pour supprimer la plupart des restrictions de processus d\'arrière-plan ;
62 | – Faire un changement : Aidez les téléphones à rester intelligents en partageant votre rapport d\'évaluation sur dontkillmyapp.com.
63 |
64 | DontKillMyApp est un outil d\'évaluation permettant de savoir comment votre téléphone traite les processus d\'arrière-plan. Vous pouvez mesurer avant de paramétrer votre téléphone, puis suivre les guides de lancement et réévaluez pour voir ce que votre téléphone a fait en arrière-plan.
65 |
66 | Vous pouvez partagez votre rapport depuis l\'application aux gérants du site dontkillmyapp.com, qui les compilent et en font un score négatif.
67 |
68 | Comment fonctionne l\'évaluation? (Technique!)
69 |
70 | L\'application lance un service en arrière-plan, qui lance de façon répétitive une tâche, un éxécuteur et lance plusieurs alarmes régulières (AlarmManager.setExactAndAllowWhileIdle). C\'est tout!
71 |
72 | Pour plus de détails, regardez le code-source. L\'application est open source, disponible sur https://github.com/urbandroid-team/dontkillmy-app. Merci à Doki (github.com/doubledotlabs/doki).
73 | Autoriser la planification exacte des alarmes
74 | Veuillez nous permettre de planifier des alarmes exactes pour tester correctement le traitement d\'arrière-plan basé sur les alarmes de périphérique Yoru.
75 | Quelque chose s\'est mal passé.
76 | Benchmark est en cours d\'exécution
77 |
--------------------------------------------------------------------------------
/app/src/main/res/values-id/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Mulai benchmark
6 | Hentikan benchmark
7 | Benchmark
8 | Benchmark sedang berlangsung (%1$s - %2$s) ketuk untuk menghentikan.
9 | Benchmark telah selesai, ketuk untuk melihat hasilnya
10 | Pembandingan telah berlangsung
11 | Hentikan
12 | Bersihkan
13 | Bekerja
14 | Alarm
15 | Utama
16 | Bagikan
17 | Bagikan dengan/via
18 | Laporan
19 | Durasi
20 | Peringatan
21 | Jangan isi daya dan jangan gunakan ponsel anda selama proses sedang berlangsung
22 | Batal
23 | OK
24 | Total
25 |
26 | - 1 jam
27 | - 2 jam
28 | - 3 jam
29 | - 4 jam
30 | - 5 jam
31 | - 6 jam
32 | - 7 jam
33 | - 8 jam
34 |
35 |
36 | - DontKillMyApp.com
37 | - Surel
38 | - Lainnya
39 |
40 | Cara kerja
41 | Pengukuran memulai layanan latar depan dengan penguncian layar saat bangun dan menjadwalkan tugas berulang di thread utama (setiap 10 detik), eksekutor thread kustom (setiap 10 detik), dan menjadwalkan alarm reguler menggunakan AlarmManager.setExactAndAllowWhileIdle (setiap 10 menit). Kemudian ia menghitung skor dengan membandingkan yang dieksekusi dengan yang diharapkan. \n\nSkor yang mendekati 100% adalah hasil yang baik - pengoptimalan baterai non-standar tidak diterapkan pada saat itu. Namun, ide yang bagus untuk mengulang pengujian dalam seminggu karena beberapa OEM mungkin menerapkan batasan ke aplikasi yang tidak digunakan untuk sementara waktu.\n\nGrafik\n\nSetiap baris dalam grafik mewakili 5 menit. Idealnya Anda melihat 30 lingkaran dan segitiga di setiap baris dan satu persegi di setiap baris kedua. Wilayah ruang kosong yang lebih luas menunjukkan adanya masalah - aplikasi Anda mungkin tidak berfungsi sebagaimana mestinya jika Anda tidak akan mengubah setelan ponsel.\n\n\ Untuk detail selengkapnya, periksa kode aplikasi di https://github.com/ urbandroid-team/dontkillmy-app
42 | Hubungi dukungan
43 | Beritahukan kepada yang lain
44 | Benchmark DontKillMyApp memeriksa pemrosesan latar belakang ponsel Anda untuk membuat aplikasi di ponsel Anda bekerja dengan baik.\n\nhttps://play.google.com/store/apps/details?Id=com.urbandroid.dontkillmyapp
45 | Mohon beri kami bintang!
46 | Beri Nilai
47 | Jangan pernah
48 | Nanti
49 | Kode sumber
50 | Kami ingin membuat aplikasi berfungsi bahkan pada ponsel yang produsennya lebih menyukai baterai daripada fungsionalitas.\n\nCara terbaik untuk membantu proyek ini agar terlihat adalah dengan menilai dan mengomentari alat gratis dan sumber terbuka ini di Play Store.\n\nTerima kasih banyak untuk membantu kami membuat ekosistem Android menjadi tempat yang lebih baik!
51 | Bantu untuk menerjemahkan aplikasi ini
52 | Membuat aplikasi berfungsi
53 | Aplikasi DontKillMyApp resmi ada di sini - membuat aplikasi akhirnya berfungsi dengan baik meskipun Anda tidak memiliki Pixel.
54 |
55 | Membantu Anda mengatur tugas latar belakang ponsel sehingga aplikasi Anda akhirnya dapat bekerja untuk ANDA, bahkan saat Anda tidak melihat layar Anda.
56 |
57 | Lihat bagaimana ponsel Anda bekerja dan menguji pengaturan yang berbeda dengan benchmark DontKillMyApp.
58 |
59 | Fitur:
60 | • Tolok ukur DKMA: Mengukur seberapa agresif ponsel Anda mematikan aplikasi yang berjalan di latar belakang
61 | • Panduan: Dapatkan langkah-langkah yang dapat ditindaklanjuti untuk mengatasi sebagian besar pembatasan proses latar belakang
62 | • Lakukan perubahan: ️Bantu ponsel cerdas tetap pintar dengan membagikan laporan tolok ukur Anda ke dontkillmyapp.com
63 |
64 | DontKillMyApp adalah alat tolok ukur untuk melihat seberapa baik ponsel Anda mendukung pemrosesan latar belakang. Anda dapat mengukur sebelum mengatur telepon Anda, kemudian membaca panduan pengaturan dan mengukur lagi untuk melihat seberapa banyak telepon Anda kendur di latar belakang.
65 |
66 | Anda dapat membagikan laporan Anda melalui aplikasi ke pengelola situs web dontkillmyapp.com yang menyusunnya dan mendasarkan keseluruhan skor negatif berdasarkan data tersebut.
67 |
68 | Bagaimana cara kerja benchmark? (Teknis!)
69 |
70 | Aplikasi memulai layanan latar depan dengan penguncian layar saat bangun dan menjadwalkan tugas berulang pada thread utama, pelaksana thread kustom, dan menjadwalkan alarm reguler (AlarmManager.setExactAndAllowWhileIdle). Kemudian menghitung perbandingan antara yang dieksekusi vs. diharapkan. Itu saja!
71 |
72 | Untuk lebih jelasnya, silakan periksa kodenya. Aplikasi ini open source, tersedia di https://github.com/urbandroid-team/dontkillmy-app
73 |
74 | Terima kasih spesial kepada Doki (github.com/doubledotlabs/doki).
75 | Biarkan penjadwalan alarm yang tepat
76 | TOLONG TUNJUKKAN KAMI UNTUK MENJUCTUKAN ALARM yang tepat untuk menguji pemrosesan latar belakang berbasis alarm perangkat Yoru dengan benar.
77 | Ada yang salah.
78 | Benchmark sedang berjalan
79 |
--------------------------------------------------------------------------------
/app/src/main/res/values-in/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Mulai benchmark
6 | Hentikan benchmark
7 | Benchmark
8 | Benchmark sedang berlangsung (%1$s - %2$s) ketuk untuk menghentikan.
9 | Benchmark telah selesai, ketuk untuk melihat hasilnya
10 | Pembandingan telah berlangsung
11 | Hentikan
12 | Bersihkan
13 | Bekerja
14 | Alarm
15 | Utama
16 | Bagikan
17 | Bagikan dengan/via
18 | Laporan
19 | Durasi
20 | Peringatan
21 | Jangan isi daya dan jangan gunakan ponsel anda selama proses sedang berlangsung
22 | Batal
23 | OK
24 | Total
25 |
26 | - 1 jam
27 | - 2 jam
28 | - 3 jam
29 | - 4 jam
30 | - 5 jam
31 | - 6 jam
32 | - 7 jam
33 | - 8 jam
34 |
35 |
36 | - DontKillMyApp.com
37 | - Surel
38 | - Lainnya
39 |
40 | Cara kerja
41 | Pengukuran memulai layanan latar depan dengan penguncian layar saat bangun dan menjadwalkan tugas berulang di thread utama (setiap 10 detik), eksekutor thread kustom (setiap 10 detik), dan menjadwalkan alarm reguler menggunakan AlarmManager.setExactAndAllowWhileIdle (setiap 10 menit). Kemudian ia menghitung skor dengan membandingkan yang dieksekusi dengan yang diharapkan. \n\nSkor yang mendekati 100% adalah hasil yang baik - pengoptimalan baterai non-standar tidak diterapkan pada saat itu. Namun, ide yang bagus untuk mengulang pengujian dalam seminggu karena beberapa OEM mungkin menerapkan batasan ke aplikasi yang tidak digunakan untuk sementara waktu.\n\nGrafik\n\nSetiap baris dalam grafik mewakili 5 menit. Idealnya Anda melihat 30 lingkaran dan segitiga di setiap baris dan satu persegi di setiap baris kedua. Wilayah ruang kosong yang lebih luas menunjukkan adanya masalah - aplikasi Anda mungkin tidak berfungsi sebagaimana mestinya jika Anda tidak akan mengubah setelan ponsel.\n\n\ Untuk detail selengkapnya, periksa kode aplikasi di https://github.com/ urbandroid-team/dontkillmy-app
42 | Hubungi dukungan
43 | Beritahukan kepada yang lain
44 | Benchmark DontKillMyApp memeriksa pemrosesan latar belakang ponsel Anda untuk membuat aplikasi di ponsel Anda bekerja dengan baik.\n\nhttps://play.google.com/store/apps/details?Id=com.urbandroid.dontkillmyapp
45 | Mohon beri kami bintang!
46 | Beri Nilai
47 | Jangan pernah
48 | Nanti
49 | Kode sumber
50 | Kami ingin membuat aplikasi berfungsi bahkan pada ponsel yang produsennya lebih menyukai baterai daripada fungsionalitas.\n\nCara terbaik untuk membantu proyek ini agar terlihat adalah dengan menilai dan mengomentari alat gratis dan sumber terbuka ini di Play Store.\n\nTerima kasih banyak untuk membantu kami membuat ekosistem Android menjadi tempat yang lebih baik!
51 | Bantu untuk menerjemahkan aplikasi ini
52 | Membuat aplikasi berfungsi
53 | Aplikasi DontKillMyApp resmi ada di sini - membuat aplikasi akhirnya berfungsi dengan baik meskipun Anda tidak memiliki Pixel.
54 |
55 | Membantu Anda mengatur tugas latar belakang ponsel sehingga aplikasi Anda akhirnya dapat bekerja untuk ANDA, bahkan saat Anda tidak melihat layar Anda.
56 |
57 | Lihat bagaimana ponsel Anda bekerja dan menguji pengaturan yang berbeda dengan benchmark DontKillMyApp.
58 |
59 | Fitur:
60 | • Tolok ukur DKMA: Mengukur seberapa agresif ponsel Anda mematikan aplikasi yang berjalan di latar belakang
61 | • Panduan: Dapatkan langkah-langkah yang dapat ditindaklanjuti untuk mengatasi sebagian besar pembatasan proses latar belakang
62 | • Lakukan perubahan: ️Bantu ponsel cerdas tetap pintar dengan membagikan laporan tolok ukur Anda ke dontkillmyapp.com
63 |
64 | DontKillMyApp adalah alat tolok ukur untuk melihat seberapa baik ponsel Anda mendukung pemrosesan latar belakang. Anda dapat mengukur sebelum mengatur telepon Anda, kemudian membaca panduan pengaturan dan mengukur lagi untuk melihat seberapa banyak telepon Anda kendur di latar belakang.
65 |
66 | Anda dapat membagikan laporan Anda melalui aplikasi ke pengelola situs web dontkillmyapp.com yang menyusunnya dan mendasarkan keseluruhan skor negatif berdasarkan data tersebut.
67 |
68 | Bagaimana cara kerja benchmark? (Teknis!)
69 |
70 | Aplikasi memulai layanan latar depan dengan penguncian layar saat bangun dan menjadwalkan tugas berulang pada thread utama, pelaksana thread kustom, dan menjadwalkan alarm reguler (AlarmManager.setExactAndAllowWhileIdle). Kemudian menghitung perbandingan antara yang dieksekusi vs. diharapkan. Itu saja!
71 |
72 | Untuk lebih jelasnya, silakan periksa kodenya. Aplikasi ini open source, tersedia di https://github.com/urbandroid-team/dontkillmy-app
73 |
74 | Terima kasih spesial kepada Doki (github.com/doubledotlabs/doki).
75 | Biarkan penjadwalan alarm yang tepat
76 | TOLONG TUNJUKKAN KAMI UNTUK MENJUCTUKAN ALARM yang tepat untuk menguji pemrosesan latar belakang berbasis alarm perangkat Yoru dengan benar.
77 | Ada yang salah.
78 | Benchmark sedang berjalan
79 |
--------------------------------------------------------------------------------
/app/src/main/res/values-it/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Inizio test
6 | Stop test
7 | Test
8 | Test in esecuzione (%1$s - %2$s) clicca qui per interromperlo.
9 | Test finito, clicca qui per i risultati
10 | Test ancora in esecuzione
11 | Stop
12 | Pulisci
13 | Lavoro
14 | Allarme
15 | Principale
16 | Condividi
17 | Condividi con
18 | Segnala
19 | Durata
20 | Attenzione
21 | Cerca di non ricaricare la batteria del tuo telefono e di non utilizzarlo durante l\'intero test.
22 | Cancella
23 | OK
24 | Totale
25 |
26 | - 1 ora
27 | - 2 ore
28 | - 3 ore
29 | - 4 ore
30 | - 5 ore
31 | - 6 ore
32 | - 7 ore
33 | - 8 ore
34 |
35 |
36 | - DontKillMyApp.com
37 | - Email
38 | - Altro
39 |
40 | Come funziona
41 | Il benchmark avvia un servizio in primo piano con un wakelock e pianifica attività ripetitive sul thread principale (ogni 10 secondi), un esecutore di thread personalizzato (ogni 10 secondi) e pianifica allarmi regolari utilizzando AlarmManager.setExactAndAllowWhileIdle (ogni 10 minuti). Quindi calcola il punteggio confrontando i risultati eseguiti e quelli previsti. \n\n I punteggi vicini al 100% sono buoni risultati - al momento non vengono applicate ottimizzazioni della batteria non standard. E\' bene ripetere il test entro una settimana poiché alcuni OEM potrebbero applicare limiti alle app che non vengono utilizzate da un po \'. \n\nGRAFICO\n\nOgni riga del grafico rappresenta 5 minuti. Idealmente vedi 30 cerchi e triangoli su ogni linea e un quadrato su ogni seconda linea. Le aree con più spazi vuoti indicano un problema: le tue app potrebbero non funzionare come previsto se non modifichi le impostazioni del telefono. \n\n\Per maggiori dettagli controlla il codice delle app su https://github.com/urbandroid-team/dontkillmy-app
42 | Contatta il supporto
43 | Dillo agli altri
44 | DontKillMyApp Benchmark controlla i processi in background del tuo telefono per far funzionare correttamente le app del tuo telefono.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | Per favore, valutaci!
46 | Valuta
47 | Mai
48 | Più tardi
49 | Codice sorgente
50 | Vogliamo che le app funzionino anche sui telefoni i cui produttori preferiscono la durata della batteria alle funzionalità.\n\nIl modo migliore per rendere visibile questo progetto è valutare e commentare questo strumento gratuito e open source sul Play Store.\n\nGrazie mille per averci aiutato a rendere l\'ecosistema Android un posto migliore!
51 | Aiuta a tradurre l\'app
52 | Fai funzionare le app
53 | L\'app ufficiale di DontKillMyApp è qui - finalmente le app funzionano correttamente anche se non possiedi un Pixel.
54 |
55 | Ti aiuta a configurare le attività in background del tuo telefono in modo che le tue app possano finalmente funzionare per TE anche quando il tuo schermo è spento.
56 |
57 | Guarda come sta il tuo telefono e prova diverse impostazioni con il benchmark di DontKillMyApp.
58 |
59 | Caratteristiche:
60 | • Benchmark DKMA: misura quanto è aggressivo il tuo telefono nel terminare le app in background
61 | • Guide: ottieni passaggi attuabili per superare la maggior parte delle limitazioni dei processi in background
62 | • Apporta una modifica: ️aiuta gli smartphone a rimanere intelligenti condividendo il tuo rapporto di benchmark su dontkillmyapp.com
63 |
64 | DontKillMyApp è uno strumento di benchmark per vedere quanto bene il tuo telefono supporta l\'elaborazione in background. È possibile fare il benchmark prima di configurare il telefono, quindi consultare nuovamente le guide di configurazione e il benchmark per vedere quanto il telefono è intervenuto nel terminare i processi dell\'app in background.
65 |
66 | Puoi condividere il tuo report tramite l\'app con i manutentori del sito web dontkillmyapp.com che lo compilano e basano su di esso il punteggio negativo complessivo.
67 |
68 | Come funziona il benchmark? (Tecnico!)
69 |
70 | L\'app avvia un servizio in primo piano con un wakelock e pianifica attività ripetitive sul thread principale, un esecutore di thread personalizzato e pianifica allarmi regolari (AlarmManager.setExactAndAllowWhileIdle). Quindi confronta eseguito rispetto a previsto. Questo è tutto!
71 |
72 | Per maggiori dettagli controlla il codice. L\'app è open source disponibile https://github.com/urbandroid-team/dontkillmy-app
73 |
74 | Un ringraziamento speciale a Doki (github.com/doubledotlabs/doki).
75 | Consenti la pianificazione esatta degli allarmi
76 | Permettici di pianificare gli allarmi esatti per testare correttamente l\'elaborazione di background basata su allarmi Yoru.
77 | Qualcosa è andato storto.
78 | Il benchmark è in esecuzione
79 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ja/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ドント・キル・マイ・アプリ
4 | DKMA
5 | テスト開始
6 | テスト終了
7 | ベンチマーク
8 | テスト中 (%1$s - %2$s) タップすると終了します。
9 | テスト完了、タップすると結果が表示されます
10 | テストを開始しました
11 | 終了する
12 | 消去する
13 | ウォーク
14 | アラーム
15 | メイン
16 | シェアー
17 | 共有する
18 | 報告する
19 | テスト時間
20 | !警告!
21 | テスト中は、端末の充電や使用はご遠慮ください。
22 | キャンセル
23 | オーケー
24 | 総計
25 |
26 | - 一時間
27 | - 二時間
28 | - 三時間
29 | - 四時間
30 | - 五時間
31 | - 六時間
32 | - 七時間
33 | - 八時間
34 |
35 |
36 | - ドント・キル・マイ・アプリ!Don\'t kill my app!
37 | - メール
38 | - その他
39 |
40 | 原理説明
41 | ベンチマークテストでは、主要スレッドと自作スレッドで10秒ごとに常態作業を実行し、AlarmManager.setExactAndAllowWhileIdle()を使って10分ごとに通知するような、先制型のフロントエンド・サービスを起動します。計算結果は、実行時間と予想時間を比較し、得点を算出します。 \n\n 100が最高点、標準以外のバッテリー最適化は現状不可。ですが、端末製造会社によっては、一定期間使用しないアプリを制限する場合がありますので、週1回の再検査をお勧めします。 \n\n 丸と三角は1行に30個、四角は2行に1個表示されるのが最適です。 空白部分が広いほど問題があり、端末の設定を変更しないとアプリが正常に機能しない場合があります。 \n\n 詳細については、https://github.com/urbandroid-team/dontkillmy-app でアプリのコードをご参照ください。
42 | 支援センター
43 | 他の人と共有する
44 | 端末のアプリが正常に動作するように、端末のバックグラウンド処理をチェックする「ドント・キル・マイ・アプリ!ベンチマーク|DKMA Benchmark」。 \n\n https://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | 評価お願いします。
46 | 評価する
47 | もう通知されない
48 | 後で通知される
49 | オリジナル・コード
50 | 機能よりも寿命が大事という製造者の考え方もあるとはいえ、アプリは正常に機能さ せたいと考えています。\n\n プレイストアでのアプリの評価にご協力いただくことは、このオープンソース・プロジェクトの公開を増やすための最良の方法です。\n\n アンドロイドの環境改善にご協力いただいた皆様、本当にありがとうございました。
51 | このアプリの翻訳に協力する
52 | アプリを機能させる
53 | 「ドント・キル・マイ・アプリの公式アプリはこちら - Pixelを使っていなくても、アプリを再開することができます。
54 |
55 | 端末を背景で機能するように設定しておけば、アプリが助けてくれるはずです 画面を見つめていないときでも
56 |
57 | さて、DontKillMyAppテストで、端末の状態を確認し、様々な設定を試してみてください。
58 |
59 | 特別な機能
60 | - DKMAベンチマークテスト。 端末がバックエンド・アプリをどれだけ積極的に終了させるかを測定します。
61 | - ご案内です。 バックエンドの進捗制限のほとんどを解決するための実行可能な手引きをご覧ください。
62 | -改善する:️ベンチマーク結果をdontkillmyapp.comで共有し、端末の性能を維持することができます。
63 |
64 | ドント・キル・マイ・アプリは、お使いの端末がバックエンド処理にどの程度対応しているかを確認できるベンチマーク・ツールです。 設定前に端末を測定し、設定案内を見ながら再度ベンチマークを行うことで、端末がどの程度バックエンドでたるんでいるかを確認することができます。
65 |
66 | また、アプリを通じてdontkillmyapp.comのサイト管理者に報告すると、管理者がその報告を集計し、それに基づき全体の負点を算出することができます。
67 |
68 | テストはどんな方法で行うのですか? (技術的に!)
69 |
70 | アプリは、待機中のロックでフロントエンドの機能を起動し、主要スレッドで繰り返し作業を予定し、自作スレッド・エクゼキュータを予定し、定期的に通知を予定します (AlarmManager.setExactAndAllowWhileIdle). そして、その実行内容と期待値を計算する。
71 |
72 | 詳しくはコードをご覧ください。 このアプリはオープンソースで、https://github.com/urbandroid-team/dontkillmy-app で公開されています。
73 |
74 | Doki (github.com/doubledotlabs/doki) に特別な感謝を捧げます。"
75 | 正確なアラームスケジューリングを許可します
76 | 正確なアラームをスケジュールして、Yoruデバイスアラームベースの背景処理を適切にテストしてください。
77 | 何かがうまくいかなかった。
78 | ベンチマークが実行されています
79 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night-v31/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #FFFFFF
5 | @android:color/system_accent1_300
6 | @android:color/system_accent1_500
7 | @android:color/system_accent2_500
8 | @android:color/system_neutral1_900
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #ba68c8
5 | #9c27b0
6 | #ba68c8
7 | #1e1e1e
8 |
9 |
10 | #ffffffff
11 | #ffffffff
12 | #b2ffffff
13 | #54ffffff
14 | #1effffff
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values-nl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Start de evaluatie
6 | Stop de evaluatie
7 | Evaluatie
8 | Evaluatie loopt (%1$s - %2$s) klik om te stoppen.
9 | Evaluatie is gestopt,klik voor het resultaat
10 | De evaluatie loopt al
11 | Stop
12 | Wis
13 | Werk
14 | Alarm
15 | Totaal
16 | Deel
17 | Deel met
18 | Rapporteer
19 | Duur
20 | Waarschuwing
21 | Gelieve de telefoon niet in de oplader te laten en gebruik de telefoon niet gedurende de evaluatietest.
22 | Afbreken
23 | OK
24 | Totaal
25 |
26 | - 1 uur
27 | - 2 uur
28 | - 3 uur
29 | - 4 uur
30 | - 5 uur
31 | - 6 uur
32 | - 7 uur
33 | - 8 uur
34 |
35 |
36 | - DontKillMyApp.com
37 | - E-mail
38 | - Anders
39 |
40 | Hoe werkt het
41 | Contacteer helpdesk
42 | Vertel het anderen
43 | DontKillMyApp Benchmark controleert de achtergrondprocessen van uw telefoon om de apps goed te laten werken.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
44 | Beoordeel ons aub!
45 | Beoordeel
46 | Nooit
47 | Later
48 | Broncode
49 | Ons doel is om uw apps te laten werken. Zelfs als de telefoonfabrikant belangrijker vinden om de batterij te sparen ten koste van de functionaliteit.\n\nDe beste manier om ons te helpen is om ons te beoordelen in de Playstore.\n\nHeel hartelijk dank om het Android platform beter te maken.
50 | Help ons om de app te vertalen.
51 | Maak apps werkend
52 | De officiele DontKillMyApp app is gearriveerd – Maakt apps eindelijk werkend, zelfs als je geen Pixel hebt.
53 |
54 | Helpt om de achtergrond taken in te stellen zodat je apps eindelijk werken, zelfs als je niet op je scherm kijkt.
55 |
56 | Bekijk hoe je telefoon het doet en test verschillende instellingen met de DontKillMyApp Benchmark.
57 |
58 | Eigenschappen:
59 | • DKMA benchmark: Meet hoe aggressief de telefoon achtergrondprocessen stopt. Apps
60 | • Ondersteund: Geeft stappen om de meest voorkomende restricties van de achtergrondprocessen aan te passen.
61 | • Help mee: Help mee om smartphones slim te laten blijven om de evaluaties op te sturen naar dontkillmyapp.com
62 |
63 | DontKillMyApp doet metingen om te kijken hoe goed de telefoon het doet in de ondersteuning van de achtergrondprocessen.
64 |
65 | Doe een meting voordat je de telefooninstellingen aanpast. Dan ga door het stappenplan om te zien hoeveel je achtergrondprocessen vertragen.
66 |
67 | Je kan de resultaten delen met de ontwikkelaars een algemene score berekenen en daarmee de negatieve score bepalen.
68 |
69 | Hoe werkt de evaluatie? (Technisch!)
70 | De app start een voorgrondprocess service met een wakker worden lock en plant een herhalende taak op het hoofdproces, een aangepaste custom thread executer, en plant regelmatig alarmeringen(AlarmManager.setExactAndAllowWhileIdle). Dan rekent hij uitgevoerde versus verwachte resultaten.Zo simpel is het.
71 |
72 | Voor meer detail zie de broncode. De app is opensource en beschikbaar op https://github.com/urbandroid-team/dontkillmy-app
73 |
74 | Speciale dank voor Doki (github.com/doubledotlabs/doki).
75 | Sta exacte alarmplanning toe
76 | Staat u toe om exacte alarmen te plannen om Yoru-apparaat gebaseerde achtergrondverwerking correct te testen.
77 | Er is iets fout gegaan.
78 | Benchmark is actief
79 |
--------------------------------------------------------------------------------
/app/src/main/res/values-pl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Rozpocznij benchmark
6 | Zatrzymaj benchmark
7 | Benchmark
8 | Benchmark trwa (%1$s - %2$s). Naciśnij by zatrzymać
9 | Benchmark zakończony, naciśnij by zobaczyć rezultaty
10 | Benchmark już trwa...
11 | Zatrzymaj
12 | Wyczyść
13 | Praca
14 | Alarm
15 | Główny
16 | Udostępnij
17 | Udostępnij przez
18 | Zgłoś
19 | Czas trwania
20 | Ostrzeżenie
21 | Nie podłączaj telefonu do ładowania i staraj się go nie używać podczas całości trwania benchmarku.
22 | Anuluj
23 | OK
24 | Razem
25 |
26 | - 1 godzina
27 | - 2 godziny
28 | - 3 godziny
29 | - 4 godziny
30 | - 5 godzin
31 | - 6 godzin
32 | - 7 godzin
33 | - 8 godzin
34 |
35 |
36 | - DontKillMyApp.com
37 | - Email
38 | - Inne
39 |
40 | Jak to działa
41 | Benchmark startuje jako pierwszoplanowy serwis z blokadą wybudzenia i wykonuje powtarzające się zadania w głównym wątku (co 10 s.), na niestandardowym wykonawcy wątku (co 10 s.) i ustawia zwykłe budziki używając AlarmManager.setExactAndAllowWhileIdle (co 10 min.). Następnie, oblicza wynik poprzez porównanie ilości zadań wykonanych z ilością oczekiwaną. \n\nWyniki blisko 100% są dobrymi wynikami - niestandardowe optymalizacje baterii są wyłączone. Aczkolwiek, dobrze jest powtarzać test co tydzień, ponieważ niektóre OEM\'y mogą nakładać limity na aplikacje które nie są często używane. \n\nWYKRES\n\nKażdy wiersz w wykresie reprezentuje 5 minut testu. Zobaczysz 30 kółek i trójkątów na każdej linii, oraz jeden kwadrat na co drugiej linii. Miejsca, w których znajduje się większa ilość białej przestrzeni przedstawiają problem - twoje aplikacje mogą przestać działać, jeśli nie zmienisz ustawień swojego telefonu. \n\n\Po więcej informacji sprawdź kod aplikacji wchodzą na stronę: https://github.com/urbandroid-team/dontkillmy-app
42 | Kontakt ze wsparciem
43 | Powiedz innym
44 | DontKillMyApp Benchmark sprawdza przetwarzanie w tle, aby aplikacje na telefonie działały poprawnie.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | Prosimy oceń naszą aplikację!
46 | Oceń teraz
47 | Nigdy
48 | Później
49 | Kod źródłowy
50 | Chcemy, by aplikacje działały nawet na telefonach, gdzie producenci stawiają baterię nad funkcjonalnością.\n\nNajlepszy sposób, w jaki możesz wspomóc ten projekt, to dodanie opinii o tej darmowej i otwartoźródłowej aplikacji w Sklepie Play.\n\nWielkie dzięki za pomoc w tworzeniu ekosystemu Androida lepszym miejscem!
51 | Pomóż przetłumaczyć aplikację
52 | Spraw, by aplikacje działały
53 | Oficjalna aplikacja DontKillMyApp już tu jest - spraw, aby aplikacje w końcu działały poprawnie, nawet jeśli nie masz Pixel\'a.
54 |
55 | Pomaga ustawić zadania w tle tak, aby twoje aplikacje działały dla CIEBIE, nawet jeśli nie używasz swojego telefonu.
56 |
57 | Zobacz jak działa Twój telefon i przetestuj różne ustawienia poprzez benchmark w aplikacji DontKillMyApp.
58 |
59 | Funkcje:
60 | • Benchmark DKMA: Sprawdź jak agresywnie twój telefon \'zabija\' procesy w tle
61 | • Poradniki: Uzyskaj wykonywalne kroki, do pokonania większość restrykcji dla procesów w tle
62 | • Zrób zmianę:️ Pomóż smartfonom zostać smart poprzez udostępnienie swojego benchmarku na stronie dontkillmyapp.com
63 |
64 | DontKillMyApp jest narzędziem do benchmarków. Pozwala na zobaczenie jak dobrze twój telefon wspiera procesy w tle. Możesz sprawdzić, jak twój telefon wypadnie przed zastosowaniem własnych ustawień, a następnie ustawić swój telefon i przeprowadzić benchmark ponownie.
65 |
66 | Możesz udostępnić swój raport poprzez aplikacje do właścicieli strony dontkillmyapp.com, którzy go skompilują i oprą na nim ogólny negatywny wynik.
67 |
68 | Jak działa benchmark?
69 | (Techniczne!)
70 |
71 | Aplikacja startuje jako pierwszoplanowy serwis z blokadą budzenia i planuje powtarzające się zadania na głównym wątku, na niestandardowym wykonawcy wątku i ustawia zwykłe budziki (AlarmManager.setExactAndAllowWhileIdle). Następnie, oblicza wynik poprzez porównanie wykonanego z oczekiwanym wynikiem. To wszystko!
72 |
73 | Po więcej szczegółów sprawdź kod aplikacji. Aplikacja ma otwarte źródło dostępne na stronie https://github.com/urbandroid-team/dontkillmy-app
74 | Specjalne podziękowania dla Doki (github.com/doubledotlabs/doki).
75 | Zezwalaj na dokładne planowanie alarmów
76 | Pozwól nam zaplanować dokładne alarmy, aby właściwie przetestować przetwarzanie tła oparte na alarmach Joru.
77 | Coś poszło nie tak.
78 | Benchmark działa
79 |
--------------------------------------------------------------------------------
/app/src/main/res/values-pt-rBR/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontkillMyApp
4 | DKMA
5 | Iniciar o processo
6 | Parar o processo
7 | Benchmark
8 | Teste de referência em execução (%1$s - %2$s) toque para parar.
9 | Benchmark finalizado, toque para ver os resultados
10 | O processo já está em execução
11 | Parar
12 | Limpar
13 | Trabalhos
14 | Alarme
15 | Principal
16 | Compartilhar
17 | Compartilhar com
18 | Relatório
19 | Duração
20 | Atenção
21 | Por favor mantenha seu celular fora do carregador e tente não usá-lo durante o processo.
22 | Cancelar
23 | Ok
24 | Total
25 |
26 | - 1 hora
27 | - 2 horas
28 | - 3 horas
29 | - 4 horas
30 | - 5 horas
31 | - 6 horas
32 | - 7 horas
33 | - 8 horas
34 |
35 |
36 | - DontkillMyApp.com
37 | - E-mail
38 | - Outro
39 |
40 | Como funciona
41 | O benchmark inicia um serviço de primeiro plano com um wake lock e horário de tarefas repetitivas no thread principal (a cada 10s), um executor de thread personalizado (a cada 10s) e horários de alarmes regulares usando AlarmManager.setExactAndAllowWhileIdle (a cada 10 minutos). Em seguida, ele calcula os resultados comparando os executados com os esperados.\n\nOs escores próximos a 100% são bons resultados - otimizações de bateria não padrão não são aplicadas no momento. Embora seja bom repetir o teste em uma semana, pois alguns OEMs podem aplicar limites a aplicativos que não são usados por um tempo.\n\nO GRÁFICO\n\nCada linha no gráfico representa 5 minutos. Idealmente, você vê 30 círculos e triângulos em cada linha e um quadrado a cada segunda linha. Regiões maiores de espaço em branco indicam um problema - seus aplicativos podem não funcionar como pretendido se você não alterar as configurações do telefone.\n\n\ Para obter mais detalhes, verifique o código dos aplicativos em https://github.com/urbandroid-team/dontkillmy-app
42 | Entrar em contato
43 | Conte para os outros
44 | O DontKillMyApp Benchmark verifica o processamento em segundo plano do telefone para fazer os aplicativos funcionarem corretamente. \ N \ nhttps: //play.google.com/store/apps/details? Id = com.urbandroid.dontkillmyapp
45 | Por favor, deixe sua avaliação.
46 | Avaliar
47 | Nunca
48 | Depois
49 | Código=fonte
50 | Queremos que os aplicativos funcionem mesmo em telefones cujos fabricantes preferem bateria em vez de funcionalidade.\n\nA melhor maneira de ajudar a tornar este projeto visível é avaliar e comentar esta ferramenta gratuita e de código aberto na Play Store. \n\nMuito obrigado. por nos ajudar a tornar o ecossistema Android um lugar melhor!
51 | Ajude-nos a traduzir o app
52 | Faça os aplicativos funcionarem
53 | O aplicativo oficial DontKillMyApp está aqui - faça os aplicativos finalmente funcionarem corretamente, mesmo se você não tiver um Pixel.
54 |
55 | Ajuda a configurar as tarefas em segundo plano do telefone para que seus aplicativos possam finalmente funcionar para VOCÊ, mesmo quando não estiver olhando para a tela.
56 |
57 | Veja como está o seu telefone e teste diferentes configurações com o benchmark DontKillMyApp.
58 |
59 | Características:
60 | • Referência DKMA: meça a agressividade do seu telefone, matando os aplicativos de fundo
61 | • Guias: obtenha etapas acionáveis para superar a maioria das restrições de processo em segundo plano
62 | • Faça uma mudança: ️Ajude os smartphones a ficarem inteligentes compartilhando seu relatório de benchmark com dontkillmyapp.com
63 |
64 | DontKillMyApp é uma ferramenta de referência para ver se o seu telefone suporta o processamento em segundo plano. Você pode medir antes de configurar seu telefone, depois seguir os guias de configuração e comparar novamente para ver o quanto seu telefone está relaxando em segundo plano.
65 |
66 | Você pode compartilhar seu relatório por meio do aplicativo com os mantenedores do site dontkillmyapp.com que o compilam e baseiam a pontuação negativa geral nele.
67 |
68 | Como funciona o benchmark? (Técnico!)
69 |
70 | O aplicativo inicia um serviço de primeiro plano com um wake lock e horários de tarefas repetitivas no thread principal, um executor de thread personalizado e horários de alarmes regulares (AlarmManager.setExactAndAllowWhileIdle). Em seguida, ele calcula executado vs.esperado. É isso!
71 |
72 | Para mais detalhes verifique o código. O aplicativo é de código aberto disponível em https://github.com/urbandroid-team/dontkillmy-app
73 | Agradecimentos especiais a Doki (github.com/doubledotlabs/doki).
74 | Permitir agendamento exato de alarme
75 | Permita-nos agendar alarmes exatos para testar corretamente o processamento de fundo baseado em alarme do dispositivo YORU.
76 | Ops, algo quando errado.
77 | O benchmark está em execução
78 |
--------------------------------------------------------------------------------
/app/src/main/res/values-pt/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Iniciar benchmark
6 | Parar benchmark
7 | Benchmark
8 | Executando teste (%1$s - %2$s2) toque para finalizar.
9 | O benchmark foi finalizado, toque para ver os resultados
10 | Ainda está em execução
11 | Parar
12 | Limpar
13 | Trabalhando
14 | Alarme
15 | Principal
16 | Compartilhar
17 | Compartilhar com
18 | Reportar
19 | Duração
20 | Atenção
21 | Por favor mantenha seu telemóvel desconectado do carregador e não tente usá-lo até que o teste finalize.
22 | Cancelar
23 | OK
24 | Total
25 |
26 | - 1 hora
27 | - 2 horas
28 | - 3 horas
29 | - 4 horas
30 | - 5 horas
31 | - 6 horas
32 | - 7 horas
33 | - 8 horas
34 |
35 |
36 | - DontKillMyApp.com
37 | - Email
38 | - Outro
39 |
40 | Como funciona
41 | O benchmark inicia um serviço de primeiro plano com um wake lock e horário de tarefas repetitivas no thread principal (a cada 10s), um executor de thread personalizado (a cada 10s) e horários de alarmes regulares usando AlarmManager.setExactAndAllowWhileIdle (a cada 10 minutos). Em seguida, ele calcula os resultados comparando os executados com os esperados.\n\nOs escores próximos a 100% são bons resultados - otimizações de bateria não padrão não são aplicadas no momento. Embora seja bom repetir o teste em uma semana, pois alguns OEMs podem aplicar limites a aplicativos que não são usados por um tempo.\n\nO GRÁFICO\n\nCada linha no gráfico representa 5 minutos. Idealmente, você vê 30 círculos e triângulos em cada linha e um quadrado a cada segunda linha. Regiões maiores de espaço em branco indicam um problema - seus aplicativos podem não funcionar como pretendido se você não alterar as configurações do telefone.\n\n\ Para obter mais detalhes, verifique o código dos aplicativos em https://github.com/urbandroid-team/dontkillmy-app
42 | Contactar suporte
43 | Contacte outros
44 | O DontKillMyApp Benchmark verifica o processamento em segundo plano do telefone para fazer os aplicativos funcionarem corretamente. \ N \ nhttps: //play.google.com/store/apps/details? Id = com.urbandroid.dontkillmyapp
45 | Por favor, nós avalie!
46 | Avaliar
47 | Nunca
48 | Mais tarde
49 | Código fonte
50 | Queremos que os aplicativos funcionem mesmo em telefones cujos fabricantes preferem bateria em vez de funcionalidade.\n\nA melhor maneira de ajudar a tornar este projeto visível é avaliar e comentar esta ferramenta gratuita e de código aberto na Play Store. \n\nMuito obrigado. por nos ajudar a tornar o ecossistema Android um lugar melhor!
51 | Ajude a traduzir o aplicativo
52 | Lema
53 | O aplicativo oficial DontKillMyApp está aqui - faça os aplicativos finalmente funcionarem corretamente, mesmo se você não tiver um Pixel.
54 |
55 | Ajuda a configurar as tarefas em segundo plano do telefone para que seus aplicativos possam finalmente funcionar para VOCÊ, mesmo quando não estiver olhando para a tela.
56 |
57 | Veja como está o seu telefone e teste diferentes configurações com o benchmark DontKillMyApp.
58 |
59 | Características:
60 | • Referência DKMA: meça a agressividade do seu telefone, matando os aplicativos de fundo
61 | • Guias: obtenha etapas acionáveis para superar a maioria das restrições de processo em segundo plano
62 | • Faça uma mudança: ️Ajude os smartphones a ficarem inteligentes compartilhando seu relatório de benchmark com dontkillmyapp.com
63 |
64 | DontKillMyApp é uma ferramenta de referência para ver se o seu telefone suporta o processamento em segundo plano. Você pode medir antes de configurar seu telefone, depois seguir os guias de configuração e comparar novamente para ver o quanto seu telefone está relaxando em segundo plano.
65 |
66 | Você pode compartilhar seu relatório por meio do aplicativo com os mantenedores do site dontkillmyapp.com que o compilam e baseiam a pontuação negativa geral nele.
67 |
68 | Como funciona o benchmark? (Técnico!)
69 |
70 | O aplicativo inicia um serviço de primeiro plano com um wake lock e horários de tarefas repetitivas no thread principal, um executor de thread personalizado e horários de alarmes regulares (AlarmManager.setExactAndAllowWhileIdle). Em seguida, ele calcula executado vs.esperado. É isso!
71 |
72 | Para mais detalhes verifique o código. O aplicativo é de código aberto disponível em https://github.com/urbandroid-team/dontkillmy-app
73 | Agradecimentos especiais a Doki (github.com/doubledotlabs/doki).
74 | Permitir agendamento exato de alarme
75 | Permita-nos agendar alarmes exatos para testar corretamente o processamento de fundo baseado em alarme do dispositivo YORU.
76 | Ops, algo quando errado.
77 | O benchmark está em execução
78 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ro/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Porneşte testul
6 | Opreşte testul
7 | Testează
8 | Testul rulează (%1$s - %2$s) atinge pentru al opri.
9 | Testul s-a terminat, atinge pentru rezultate
10 | Testul deja rulează
11 | Stop
12 | Lucrează
13 | Principal
14 | Distribuie
15 | Distribuie către
16 | Raportează
17 | Durata
18 | Atenţie
19 | Vă rugăm să nu ţineţi telefonul conectat la încărcător şi încercaţi să nu îl folosiţi pe toată durata testului.
20 | Anulare
21 | OK
22 | Total
23 |
24 | - 1 oră
25 | - 2 ore
26 | - 3 ore
27 | - 4 ore
28 | - 5 ore
29 | - 6 ore
30 | - 7 ore
31 | - 8 ore
32 |
33 |
34 | - DontKillMyApp.com
35 | - Email
36 | - Altele
37 |
38 | Cum funcţionează
39 | Acest test porneşte un serviciu care ar trebui să ruleze permanent şi foloseşte nişte sarcini repetitive principale (la fiecare 10 s), o sarcină specifică (la fiecare 10 s) şi programează alarme regulate folosind AlarmManager.setExactAndAllowWhileIdle (la fiecare 10 min). Apoi calculează punctajul prin compararea sarcinilor efectuate faţă de cele programate.\n\nPunctaje apropiate de 100% sunt bune – ceea ce înseamnă că optimizarea bateriei nu este aplicată în acel moment. Totuşi este bine să repetaţi testul săptămânal, deoarece unele sisteme de operare pot aplica limitări aplicaţiilor care nu sunt folosite frecvent.\n\nGRAFICUL\n\nFiecare rând al graficului reprezintă 5 minute. Ar trebui să fie 30 de cercuri şi triunghiuri pe fiecare linie şi un pătrat la fiecare 2 linii. Zonele libere arată o problemă – aplicaţiile dvs. s-ar putea să nu funcţioneze cum ar trebui dacă nu schimbaţi setările telefonului.\n\nPentru mai multe detalii consultaţi codul sursă al aplicaţiei la adresa https://github.com/urbandroid-team/dontkillmy-app
40 | Cereţi ajutor
41 | Spuneţi şi altora
42 | Testul DontKillMyApp verifică funcţionarea în fundal a aplicaţiilor pentru a le face să funcţioneze corespunzător.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
43 | Vă rugăm să apreciaţi aplicaţia!
44 | Acum
45 | Niciodată
46 | Mai târziu
47 | Codul sursă
48 | Ne dorim să facem aplicaţiile fucţionale chiar şi la telefoanele gândite să conserve bateria în detrimentul funcţionalităţii.\n\nCea mai bună cale de a face proiectul cunoscut este să apreciaţi şi să comentaţi această aplicaţie gratuită în PlayStore.\n\nMulţumim că ne ajutaţi să facem sistemul Android mai bun!
49 | Help translate the app
50 | Facem aplicaţile să funcţioneze
51 | Permiteți programarea exactă a alarmelor
52 | Vă rugăm să ne permiteți să programăm alarme exacte pentru a testa corect procesarea fundalului bazată pe alarmă.
53 | Ceva n-a mers bine.
54 | Benchmark funcționează
55 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ru/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Начать проверку
6 | Остановить проверку
7 | Проверка
8 | Проверка запущена (%1$s — %2$s). Нажмите, чтобы остановить.
9 | Проверка завершена, нажмите для просмотра результатов
10 | Проверка уже выполняется
11 | Остановить
12 | Очистить
13 | Работа
14 | Будильник
15 | Основное
16 | Поделиться
17 | Поделиться с
18 | Отчёт
19 | Продолжительность
20 | Внимание
21 | Пожалуйста, не ставьте телефон на зарядку и постарайтесь не пользоваться им во время проверки.
22 | Отмена
23 | ОК
24 | Общая оценка
25 |
26 | - 1 час
27 | - 2 часа
28 | - 3 часа
29 | - 4 часа
30 | - 5 часов
31 | - 6 часов
32 | - 7 часов
33 | - 8 часов
34 |
35 |
36 | - DontKillMyApp.com
37 | - Эл. почта
38 | - Другие варианты
39 |
40 | Как это работает
41 | Во время проверки запускается фоновая служба с защитой от блокировки и планируются повторяющиеся задачи в основном потоке (каждые 10 секунд), специальном исполнителе потока (каждые 10 секунд), а также планируются повторяющиеся будильники с помощью AlarmManager.setExactAndAllowWhileIdle (каждые 10 минут). В конце путем сравнения ожидаемых и выполненных задач рассчитывается оценка.\n\nОценки, близкие к 100% — это хороший результат, то есть в это время не применялись нестандартные оптимизации батареи. Кстати, рекомендуем повторить проверку в течение недели, поскольку некоторые производители ограничивают приложения, не запускавшиеся какое-то время.\n\nДИАГРАММА\n\nВ строках диаграммы представлены пятиминутные интервалы. В идеале на диаграмме должно быть 30 кружков и треугольников в каждой строке, а также квадратик на каждой второй строке. Большие пустые участки указывают на проблему — приложения могут работать некорректно, если Вы не поменяете настройки телефона.\n\n\Чтобы узнать подробнее, как выполняются проверки, см. код приложения: https://github.com/urbandroid-team/dontkillmy-app
42 | Обратиться в поддержку
43 | Рассказать друзьям
44 | Проверка DontKillMyApp проверяет работу фоновых процессов вашего телефона, чтобы Ваши приложения работали корректно.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | Пожалуйста, оцените приложение!
46 | Оценить
47 | Никогда
48 | Позже
49 | Исходный код
50 | Мы хотим, чтобы приложения работали даже на тех телефонах, производители которых берегут батарею в ущерб функциональности.\n\nЛучший способ рассказать об этом бесплатном открытом проекте — оставить оценку и комментарий в магазине Google Play.\n\nОт всего сердца благодарим Вас за помощь — вместе мы сделаем экосистему Android лучше!
51 | Помочь с переводом приложения
52 | Помогает приложениям работать
53 | Представляем официальное приложение DontKillMyApp — с ним приложения начнут нормально работать даже на аппаратах Pixel.
54 |
55 | Приложение поможет настроить фоновые задачи телефона так, чтобы приложения работали даже тогда, когда Вы НЕ СМОТРИТЕ на экран телефона.
56 |
57 | Оцените работу Вашего телефона и узнайте настройки телефона с помощью проверки DontKillMyApp.
58 |
59 | Возможности:
60 | • Проверка DKMA — узнайте, насколько агрессивно Ваш телефон отключает фоновые процессы
61 | • Инструкции — следуйте пошаговым инструкциям, чтобы убрать большинство ограничений фоновых процессов
62 | • Добейтесь перемен — помогите смартфонам стать действительно умными, отправив результаты проверки на dontkillmyapp.com
63 |
64 | DontKillMyApp — это утилита для проверки того, как Ваш телефон работает с фоновыми процессами. Вы можете провести проверку перед настройкой телефона, проследовать инструкциям и затем снова проверить, как Ваш телефон распоряжается фоновыми процессами.
65 |
66 | Вы можете прямо из приложения отправить Ваши результаты проверки разработчикам сайта dontkillmyapp.com — они учтут Ваши результаты и формируют общую оценку производителя.
67 |
68 | Как работает проверка? (Используется технический язык!)
69 |
70 | Во время проверки запускается фоновая служба с защитой от блокировки и планируются повторяющиеся задачи в основном потоке (каждые 10 секунд), специальном исполнителе потока (каждые 10 секунд), а также планируются повторяющиеся будильники с помощью AlarmManager.setExactAndAllowWhileIdle (каждые 10 минут). В конце путем сравнения ожидаемых и выполненных задач рассчитывается оценка. Принцип таков!
71 |
72 | Чтобы узнать подробности, ознакомьтесь с кодом. Приложение имеет открытый код, доступный на https://github.com/urbandroid-team/dontkillmy-app
73 | Особая благодарность Doki (github.com/doubledotlabs/doki)."
74 | Разрешить точное планирование тревоги
75 | Пожалуйста, позвольте нам запланировать точные сигналы тревоги для правильной проверки фоновой обработки на основе сигнализации устройства Yoru.
76 | Что-то пошло не так.
77 | Бланка работает
78 |
--------------------------------------------------------------------------------
/app/src/main/res/values-tr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Değerlendirmeyi başlat
6 | Değerlendirmeyi durdur
7 | Performans değerlendirmesi
8 | Değerlendirme çalışıyor (%1$s - %2$s) durdurmak için dokunun.
9 | Değerlendirme bitti, sonuçlar için dokunun
10 | Değerlendirme zaten çalışıyor
11 | Durdur
12 | Temizle
13 | İş
14 | Alarm
15 | Ana
16 | Paylaş
17 | İle paylaş
18 | Rapor
19 | Süre
20 | Uyarı
21 | Lütfen telefonuzu şarjdan çıkarın ve değerlendirme boyunca kullanmayın
22 | İptal et
23 | Tamam
24 | Toplam
25 |
26 | - 1 saat
27 | - 2 saat
28 | - 3 saat
29 | - 4 saat
30 | - 5 saat
31 | - 6 saat
32 | - 7 saat
33 | - 8 saat
34 |
35 |
36 | - DontKillMyApp.com
37 | - E-posta
38 | - Diğer
39 |
40 | Nasıl çalışıyor
41 | Performans değerlendirmesi uyku engelleme ve planlanmış tekrar eden görevler ile bir önplan servisi başlatır.
42 | Yardım & destek
43 | Paylaş
44 | DontKillMyApp Benchmark uygulamaların telefonunuzda düzgün çalışması için telefonunuzdaki arkaplan işlemlerini inceler. \n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | Lütfen, bizi değerlendirin!
46 | Değerlendir
47 | Asla
48 | Sonra
49 | Kaynak kodu
50 | Üreticilerin pil ömrünü işlevselliğe tercih ettiği telefonlarda bile biz uygulamaların çalışmasını istiyoruz.\n\nBu projeyi duyurmada yardım edebileceğiniz en iyi yol, bu ücretsiz ve açık kaynak kodlu uygulamayı PlayStore da değerlendirmek ve yorum yazmak.\n\nAndroid ekosistemini daha güzel bir yer haline getirmeye yardım ettiğiniz için çok teşekkürler.
51 | Uygulamayı tercüme etmeye yardım et
52 | Uygulamalar çalışsın
53 | Resmi DontKillMyApp uygulaması burada - Pixel telefonunuz olmasa bile uygulamaların sonunda düzgün çalışmasını sağlayın. Telefonunuzun arka plan görevlerini ayarlamanıza yardımcı olur, böylece uygulamalarınız şu anda ekrana bakmıyorken bile SİZİN için çalışabilir. DontKillMyApp testi ile telefonunuzun nasıl çalıştığını görün ve farklı ayarları test edin. Özellikler: • DKMA testi: Telefonunuzun arka plan uygulamalarını ne kadar agresif bir şekilde öldürdüğünü ölçün • Kılavuzlar: Çoğu arka plan işlem kısıtlamasının üstesinden gelmek için eyleme geçirilebilir adımlar alın • Değişiklik yapın: Kıyaslama raporunuzu dontkillmyapp.com\'da paylaşarak akıllı telefonların akıllı kalmasına yardımcı olun DontKillMyApp, telefon unuzun arka plan işlemlerini ne kadar iyi desteklediğini görmek için bir test aracıdır. Telefonunuzu kurmadan önce ölçebilir, ardından kurulum kılavuzlarını inceleyebilir ve telefonunuzun arka planda ne kadar kaytardığını görmek için tekrar test yapabilirsiniz. Raporunuzu uygulama aracılığıyla, onu derleyen ve genel negatif puanı buna dayandıran dontkillmyapp.com web sitesinin editörleriyle paylaşabilirsiniz. Test nasıl çalışır? (Teknik!) Uygulama, uyandırma kilidi ile bir ön plan hizmetini başlatır ve ana iş parçacığında tekrarlayan görevler, özel bir iş parçacığı yürütücüsü ve düzenli alarmlar (AlarmManager.setExactAndAllowWhileIdle) kurar. Ardından yürütüleni ve bekleneni hesaplar. Bu kadar! Daha fazla ayrıntı için kodu kontrol edin. Uygulama, https://github.com/urbandroid-team/dontkillmy-app adresinde bulunan açık kaynaklıdır. Doki\'ye özel teşekkürler (github.com/doubledotlabs/doki).
54 | Tam alarm planlamasına izin ver
55 | Lütfen Yoru cihaz alarm tabanlı arka plan işlemeyi düzgün bir şekilde test etmek için kesin alarmları planlamamıza izin verin.
56 | Bir şeyler yanlış gitti.
57 | Benchmark çalışıyor
58 |
--------------------------------------------------------------------------------
/app/src/main/res/values-uz/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Benchmarkni boshlash
6 | Benchmarkni to\'xtatish
7 | Benchmark
8 | Benchmark ishlamoqda (%1$s - %2$s) To\'xtatish uchun bosing.
9 | Benchmark yakunlandi, natijasi ni ko\'rish uchun bosing
10 | Benchmark allaqachon boshlangan
11 | To\'xtatish
12 | Tozalash
13 | Ish
14 | Vaqt
15 | Asosiy
16 | Ulashish
17 | Bizni do\'stlaringiz bilan ulashing!
18 | Hisobot berish
19 | Masofasi
20 | Ogohlantirish
21 | Iltimos, benchmark davomida telefoningizni elektr quvvatlagichga ulamang.
22 | Bekor qilish
23 | OK
24 | Jami
25 |
26 | - 1 soat
27 | - 2 soat
28 | - 3 soat
29 | - 4 soat
30 | - 5 soat
31 | - 6 soat
32 | - 7 soat
33 | - 8 soat
34 |
35 |
36 | - DontKillMyApp.Com
37 |
38 | Bu qanday ishlaydi
39 | Benchmark uyg\'onish blokirovkasi bilan oldingi xizmatni ishga tushiradi va asosiy oqimdagi takroriy vazifalarni (har 10 soniyada), maxsus tasma ijrochisini (har 10 soniyada) rejalashtiradi va AlarmManager.setExactAndAllowWhileIdle (har 10 daqiqada) yordamida muntazam signallarni rejalashtiradi. Keyin bajarilgan va bajarilganlarni taqqoslash orqali ballni hisoblab chiqadi. kutilmoqda.\n\n100% ga yaqin ballar yaxshi natijalardir – nostandart batareya optimallashtirishlari hozircha qo‘llanilmagan. Testni bir haftadan keyin takrorlash yaxshi bo‘ladi, chunki ba’zi OEM’lar ma’lum muddat foydalanilmayotgan ilovalarga cheklovlar qo‘yishi mumkin.\n\nGRAFI\n\nGrafikdagi har bir qator 5 daqiqani bildiradi. Ideal holda siz har bir chiziqda 30 ta doira va uchburchakni va har ikkinchi chiziqda bitta kvadratni ko\'rasiz. Bo‘sh joyning kattaroq hududlari muammoni ko‘rsatadi – agar siz telefon sozlamalarini o‘zgartirmasangiz, ilovalaringiz mo‘ljallanganidek ishlamasligi mumkin.\n\n\Batafsil ma’lumot uchun sahifasida ilova kodini tekshiring. https://github.com/urbandroid-team/dontkillmy-app
40 | Biz bilan bog\'lanish
41 | Boshqalarga ulashing
42 | Iltimos, bizning ishimizga baho bering
43 | Baholash
44 | Hech qachon
45 | Keyinroq
46 | Ilova kodi
47 | Biz ilovalarni ishlab chiqaruvchilari funksiyadan ko‘ra batareya quvvatini uzoqqa yetishini afzal ko‘rgan telefonlarda ham ishlashini istaymiz.\n\nUshbu loyihani yanada yaxshilashga yordam berishning eng yaxshi yo‘li bu bepul va ochiq manbali ilovani Play Store’da baholash va sharhlashdir.\n\nKatta rahmat. Android ekotizimini yaxshiroq qilishimizga yordam berganingiz uchun!
48 | Ilovani tarjima qilishda yordam berish
49 | Ilovalar ishlab tursin!
50 | Rasmiy DontKillMyApp ilovasi shu yerda – Pixel qurilmangiz boʻlmasa ham, ilovalarni nihoyat toʻgʻri ishlashiga imkon bering.
51 |
52 | Telefoningiz fonidagi vazifalarni sozlashda yordam beradi, shunda ilovalaringiz hozir ekranga qaramasangiz ham SIZ uchun ishlashi mumkin.
53 |
54 | Telefoningiz qanday ishlashini ko\'ring va DontKillMyApp benchmark yordamida turli xil sozlamalarni sinab ko\'ring.
55 |
56 | Xususiyatlari:
57 | • DKMA benchmark: Telefoningiz fon ilovalarini qanchalik agressiv tarzda o‘ldirishini o‘lchang
58 | • Qo‘llanmalar: Fon jarayonidagi ko‘pgina cheklovlarni yengib o‘tish uchun amalda bo‘ladigan qadamlarni oling
59 | • O‘zgartirish kiriting: ️Dontkillmyapp.com saytida sinov hisobotini baham ko‘rish orqali smartfonlarning aqlli bo‘lishiga yordam bering.
60 |
61 | DontKillMyApp bu sizning telefoningiz fonda ishlashni qanchalik yaxshi qo\'llab-quvvatlashini ko\'rish uchun sinov vositasidir. Telefoningizni sozlashdan oldin oʻlchashingiz mumkin, soʻngra sozlash qoʻllanmalarini koʻrib chiqing va telefoningiz fonda qanchalik boʻshashayotganini koʻrish uchun yana bir bor taqqoslashingiz mumkin.
62 |
63 | Hisobotingizni ilova orqali dontkillmyapp.com veb-saytining saqlovchilari bilan baham ko\'rishingiz mumkin, ular uni tuzadi va umumiy salbiy ballni unga asoslaydi.
64 |
65 | Benchmark qanday ishlaydi? (Texnik!)
66 |
67 | Ilova uyg\'onish blokirovkasi bilan oldingi xizmatni ishga tushiradi va asosiy tarmoqdagi takroriy vazifani, maxsus ip ijrochisini rejalashtiradi va muntazam signallarni (AlarmManager.setExactAndAllowWhileIdle) rejalashtiradi. Keyin bajarilgan va kutilganlarni hisoblab chiqadi. Bo\'ldi shu!
68 |
69 | Batafsil ma\'lumot olish uchun kodni tekshiring. Ilova ochiq manba hisoblanadi: https://github.com/urbandroid-team/dontkillmy-app
70 | Dokiga alohida rahmat (github.com/doubledotlabs/doki).
71 | Aniq signalni rejalashtirishga ruxsat bering
72 | Iltimos, Yoru qurilmasining signal asosida fonni qayta ishlashni to\'g\'ri sinash uchun aniq signallarni rejalashtirishga imkon bering.
73 | Nimadir noto\'g\'ri bajarildi.
74 | Kalitmark ishlamoqda
75 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v31/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #FFFFFF
5 | @android:color/system_accent1_500
6 | @android:color/system_accent1_800
7 | @android:color/system_accent2_500
8 | @android:color/system_neutral1_0
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values-vi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | Bắt đầu kiểm tra
6 | Dừng kiểm tra
7 | Kiểm tra
8 | Đang chạy kiểm chuẩn (%1$s - %2$s) Nhấn để dừng.
9 | Đã hoàn thành kiểm tra, nhấn để xem kết quả
10 | Benchmark đang chạy
11 | Dừng
12 | Xóa
13 | Thông báo hoạt động
14 | Báo thức
15 | Thông báo chính
16 | Chia sẻ
17 | Chia sẻ cho
18 | Báo cáo
19 | Thời hạn
20 | Cảnh báo
21 | Vui lòng không sạc điện thoại và không nên dùng khi đang kiểm tra.
22 | Huỷ
23 | OK
24 | Tổng cộng
25 |
26 | - 1 tiếng
27 | - 2 tiếng
28 | - 3 tiếng
29 | - 4 tiếng
30 | - 5 tiếng
31 | - 6 tiếng
32 | - 7 tiếng
33 | - 8 tiếng
34 |
35 |
36 | - DontKillMyApp.com
37 | - Email
38 | - Khác
39 |
40 | Cách hoạt động
41 | Kiểm tra bắt đầu với một dịch vụ tiền cảnh với dịch vụ đánh thức bị khóa và bố trí để các tác vụ được lặp lại mỗi 10 giây cho chuỗi chính, cho bộ xử lí chuỗi riêng (mỗi 10 giây) và đặt đồng hồ đánh thức bằng cách dùng lớp AlarmManager.setExactAndAllowWhileIdle (mỗi 10 phút). Rồi nó tính điểm bằng cách so sánh những thông báo được đặt ra và những thông báo đã được nhận. \n\nĐiểm càng gần với 100% thì càng tốt - việc tối ưu hoá pin không tiêu chuẩn chưa được áp dụng. Bạn nên lặp lại việc kiểm tra sau một tuần là một ý tưởng tốt vì có một số OEM (nhà sản xuất gốc) chặn lại những dịch vụ trong nền khi không sử dụng.\n\n BIỂU ĐỒ\n\nMỗi hàng trong biểu đồ tương ứng với năm phút. Trên lý thuyết bạn sẽ thấy 30 hình tròn và tam giác trong một dòng, và một hình vuông mỗi dòng thứ hai. Những khu vực mà có nhiều phần trắng biểu thị vấn đề - những ứng dụng của bạn có thể không hoạt động như mong đợi nếu bạn không thay đổi cài đặt trong điện thoại bạn.\n\nĐể biết thêm thông tin vui lòng đọc mã nguồn tại https://github.com/urbandroid-team/dontkillmy-app
42 | Liên hệ hỗ trợ
43 | Chia sẻ cho người khác
44 | Kiểm chuẩn của DontKillMyApp kiểm tra việc xử lí dịch vụ nền để cho những ứng dụng hoạt động đúng cách.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | Xin hãy đánh giá chúng tôi!
46 | Đánh giá
47 | Không nhắc tôi nữa
48 | Để sau
49 | Mã nguồn
50 | Chúng tôi muốn các ứng dụng hoạt động trong điện thoại mà các nhà sản xuất ưu tiên pin hơn chức năng.\n\n Cách tốt nhất bạn có thể giúp là đánh giá ứng dụng miễn phí và mở trên cửa hàng Play.\n\nCảm ơn dã giúp chúng tôi làm hệ điều hành Android tốt hơn!
51 | Giúp phiên dịch ứng dụng
52 | Làm ứng dụng hoạt động
53 | Ứng dụng DontKillMyApp (Dịch là "Đừng giết ứng dụng của tôi") chính thức đã ở đây - Làm các ứng dụng hoạt động mà không cần điện thoại Google Pixel.
54 |
55 | Giúp bạn thiết lập các quá trình dưới nền không bị tắt để khi màn hình tắt thì ứng dụng của bạn vẫn hoạt động.
56 |
57 | Xem điện thoại của bạn đang hoạt động ra sao và thử các cài đặt với Benchmark của DontKillMyApp.
58 |
59 | Các tính năng:
60 | - Benchmark DKMA: Kiểm tra xem điện thoại của bạn có quyết liệt dừng các ứng dụng nền đến đâu
61 | - Hướng dẫn: Nhận các bước dễ dàng dể khắc phục những hạn chế về các quá trình nguồn
62 | - Tạo nên sự thay đổi: Giúp điện thoại thông minh vẫn trở nên thông minh bằng cách chia sẻ Benchmark trên dontkillmyapp.com
63 |
64 | DontKillMyApp là một dụng cụ Benchmark để xem điện thoại hỗ trợ các quá trình nền như thế nào. Ứng dụng có thể đo trước và sau khi khi điện thoại được thiết lập để xem điện thoại đang hoạt động trong nền thế nào.
65 |
66 | Bạn có thể chia sẻ các báo cáo đến những người bảo trì của trang dontkillmyapp.com - những người biên dịch chúng và so sánh với điểm trung bình trên đó.
67 |
68 | Cách kiểm chuẩn họat động (Mang tính kĩ thuật).
69 |
70 | Ứng dụng bắt đầu với một dịch vụ tiền cảnh với dịch vụ đánh thức bị khóa và bố trí công việc được lặp lại cho chuỗi chính, cho bộ xử lí chuỗi riêng và đặt đồng hồ báo thức (AlarmManager.setExactAndAllowWhileIdle). Sau đó nó tính điểm thực tế so với mong đợi. Chỉ như vậy thôi!
71 |
72 | Mọi thông tin thêm vui lòng truy cập vào ứng dụng. Ứng dụng này có mã nguồn mở tại https://github.com/urbandroid-team/dontkillmy-app
73 | Cảm ơn sâu sắc tới Doki (github.com/doubledotlabs/doki).
74 | Cho phép lập lịch báo động chính xác
75 | Vui lòng cho phép chúng tôi lên lịch báo động chính xác để kiểm tra đúng cách xử lý nền dựa trên báo động thiết bị Yoru.
76 | Có gì đó đã sai.
77 | Điểm chuẩn đang chạy
78 |
--------------------------------------------------------------------------------
/app/src/main/res/values-zh-rTW/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | 開始測試
6 | 停止測試
7 | 測試
8 | 測試中 (%1$s - %2$s) 點擊可停止
9 | 測試結束,點擊以查看結果
10 | 測試已開始
11 | 停止
12 | 清除
13 | 分享
14 | 分享到
15 | 回報
16 | 測試時間
17 | 警告
18 | 請不要在測試中充電或使用手機。
19 | 取消
20 | 確認
21 | 總計
22 |
23 | - 1 小時
24 | - 2 小時
25 | - 3 小時
26 | - 4 小時
27 | - 5 小時
28 | - 6 小時
29 | - 7 小時
30 | - 8 小時
31 |
32 |
33 | - DontKillMyApp.com
34 | - 電子郵件
35 | - 其他
36 |
37 | 運作原理
38 | 聯絡支援
39 | 跟別人分享
40 | 「DontKillMyApp 測試」檢查你手機的背景處理,以讓 App 順利運作。\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
41 | 幫我們評分,拜託!
42 | 評分
43 | 不再提醒
44 | 稍後
45 | 原始程式碼
46 | 即使在某些製造商眼裡,續航力比功能性重要,但我們依然希望 App 能正確運作。\n\n在 Play 商店幫我們評分,是增加這個開放原始碼的計畫曝光的最好方式。\n\n我們非常感激協助我們改善 Android 生態的人!
47 | 幫忙翻譯這個 App
48 | Make apps work
49 | DontKillMyApp 的官方應用程式就在這裡──即使你不是使用 Pixel,依然能讓 App 恢復正確運作。
50 |
51 | 幫你的手機設定好背景工作,如此一來 App 便能順利的協助你!即使沒有盯著螢幕也可以。
52 |
53 | 現在來看看你手機的狀況,並以「DontKillMyApp 測試」試試不同設定。
54 |
55 | 特點:
56 | - DKMA基準測試:測量你的手機是如何積極地封殺後台應用程式的
57 | - 指南:獲得可操作的步驟來剋服大多數的後台進程限制
58 | - 做出改變:️通過分享你的基準報告到dontkillmyapp.com,幫助智慧型手機保有智慧
59 |
60 | DontKillMyApp是一個基準工具,可以看到你的手機對後台處理的支持程度,在設置手機之前進行測量,然後通過設置指南,再次進行基準測試,看看手機在後台有多懈怠。
61 |
62 | 你可以通過該應用程式將你的報告分享給dontkillmyapp.com網站的維護者,他們會對報告進行匯編,並在此基礎上得出總體負分。
63 |
64 | 測試是如何運作的?(技術層面!)
65 |
66 | 此基準應用啟動一個帶有解鎖的前臺服務,在主線程上與自定義的線程執行器上安排重復的任務,並定期通知(AlarmManager.setExactAndAllowWhileIdle)。然後計算出已執行與預期的時程。That\'s it!
67 |
68 | 查看程式碼以取得詳細資訊。這個應用程式是開放原始碼的,並公開在 https://github.com/urbandroid-team/dontkillmy-app
69 |
70 | 特別感謝 Doki (github.com/doubledotlabs/doki)。
71 | 允许确切的警报安排
72 | 请允许我们安排精确的警报,以正确测试YORU设备基于警报的背景处理。
73 | 出了些问题。
74 | 基准正在运行
75 |
--------------------------------------------------------------------------------
/app/src/main/res/values-zh/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | DontKillMyApp
4 | DKMA
5 | 激活测试
6 | 终止测试
7 | 测试
8 | 测试中 (%1$s - %2$s) 点击即可终止
9 | 测试终止,点击以查看结果
10 | 测试已经开始了
11 | 终止
12 | 删除
13 | 运行
14 | 警示
15 | 主线
16 | 转发
17 | 转发给
18 | 回报
19 | 测试时长
20 | 警告
21 | 请不要在测试时充电或使用手机
22 | 取消
23 | 确认
24 | 总计
25 |
26 | - 一小时
27 | - 两小时
28 | - 三小时
29 | - 四小时
30 | - 五小时
31 | - 六小时
32 | - 七小时
33 | - 八小时
34 |
35 |
36 | - DontKillMyApp.com
37 | - 电子信箱
38 | - 其他
39 |
40 | 运作原理
41 | 此基准测试启动一个预行的前台服务,将常态程序每十秒在主线程序与自定程序运行,并使用AlarmManager.setExactAndAllowWhileIdle()每十分钟通知乙次。 通過比较已运行的与预期的时长计算出一个分数。\n\n 100分是最高分;目前无法提供非标准的电池优化。 不过一些设备制造商可能会限制一段时间内未使用的应用程序,所以建议每周重复测试。\n\n 理想情况下,每行显示三十个圆形与三角形,每两行显示一个方形。越大的空白区域表示越有问题,如果不改变设备的设定,此应用程序可能无法准确运行。\n\n 更多信息请在https://github.com/urbandroid-team/dontkillmy-app 查看应用程序码。
42 | 联络支援
43 | 转发给好友
44 | 「DontKillMyApp 测试」检查你手机的后台处理,好让App 顺利运行。\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
45 | 请你留下好评,拜托!
46 | 好评
47 | 不再提醒
48 | 稍等
49 | 原始程序码
50 | 即使在某些制造商眼里,比起续航力,功能性更重要,但我们依然希望App 能正常运行。\n\n 在应用程序商店留下好评,是增加这个开方原始程序码计划的最佳方法。\n\n 非常感谢协助我们改良安卓环境的人!
51 | 协助翻译这个App
52 | 让应用程序运行
53 | DontKillMyApp 的官方应用程序就在这里──即使你不是使用 Pixel,依然能让App 恢复正确运行。
54 |
55 | 为你的手机设定好后台程序工作,就能让 App 顺利的协助你!即使每有盯着荧幕也行。
56 |
57 | 现在来看看你的手机状态,并且根据「DontKillMyApp 测试」是是不同的设定。
58 |
59 | 特色:
60 | - DKMA基准测试:测试你的手机如何积极的封杀后台应用程序
61 | - 引导:获取易操作的指示以克服大多数的后台程序限制
62 | - 做出改变:️通过分享你的基准报告到dontkillmyapp.com,协助智慧型手机保有智慧
63 |
64 | DontKillMyApp是一个基准工具,可以看到你的手机对后台程序支持的程度,在设定手机前进行测试,然后通过设定引导,再进行测试,看看手机在后台有多怠慢。
65 |
66 | 你能通过该应用程序分享你的报告给dontkillmyapp.com网站管理员,他们会整理报告汇总,并在此基准上得出总体负分。
67 |
68 | 测试是如何运行的?(技术层面!)
69 |
70 | 此基准应用启动一个带有解锁的前台服务,在主线序列与自定义序列运行器上安排重复的程序,并按时通知(AlarmManager.setExactAndAllowWhileIdle)。接着计算出已运行与预期的时长差。That\'s it!
71 |
72 | 查看程序码来获取更多资讯。这个应用程序是开放程序码,且公开在 https://github.com/urbandroid-team/dontkillmy-app 上。
73 |
74 | 特别感谢 Doki (github.com/doubledotlabs/doki)。
75 | 允许确切的警报安排
76 | 请允许我们安排精确的警报,以正确测试YORU设备基于警报的背景处理。
77 | 出了些问题。
78 | 基准正在运行
79 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #6200EE
5 | #3700B3
6 | #6200EE
7 | @color/white
8 |
9 |
10 | #FF000000
11 | #c7000000
12 | #8a000000
13 | #61000000
14 | #33000000
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | DontKillMyApp
3 | DKMA
4 | Start benchmark
5 | Stop benchmark
6 | Benchmark
7 | Benchmark running (%1$s - %2$s) tap to stop.
8 | Benchmark finished, tap for results
9 | Benchmark is already running
10 | Stop
11 | Clear
12 | Work
13 | Alarm
14 | Main
15 | Share
16 | Share with
17 | Report
18 | Duration
19 | Warning
20 | Please keep your phone out of the charger and try to not use it during the entire benchmark.
21 | Cancel
22 | OK
23 | Total
24 |
25 |
26 | - 1 hour
27 | - 2 hours
28 | - 3 hours
29 | - 4 hours
30 | - 5 hours
31 | - 6 hours
32 | - 7 hours
33 | - 8 hours
34 |
35 |
36 |
37 | - DontKillMyApp.com
38 | - Email
39 | - Other
40 |
41 |
42 | How it works
43 | The benchmark starts a foreground service with a wake lock and schedules repetitive tasks on the main thread (every 10s), a custom thread executor (every 10s) and schedules regular alarms using AlarmManager.setExactAndAllowWhileIdle (every 10 minutes). Then it calculates the score by comparing executed vs. expected.\n\nScores close to 100% are good results - non-standard battery optimizations are not applied at the moment. Although it is good to repeat the test in a week as some OEMs may apply limits to apps which are not used for a while.\n\nTHE GRAPH\n\nEach row in the graph represents 5 minutes. Ideally you see 30 circles and triangles on each line and one square every second line. Larger regions of white-space indicate a problem - your apps may not work as intended if you won\'t change your phone\'s settings.\n\n\For more details check the apps code at https://github.com/urbandroid-team/dontkillmy-app
44 | Contact support
45 | Tell others
46 | DontKillMyApp Benchmark checks your phone background processing to make apps on your phone work properly.\n\nhttps://play.google.com/store/apps/details?id=com.urbandroid.dontkillmyapp
47 | Please, rate us!
48 | Rate
49 | Never
50 | Later
51 | Source code
52 | We want to make apps work even on phones whose manufacturers prefer battery over functionality.\n\nThe best way you can help make this project visible is to rate and comment this free and open source tool on the Play Store.\n\nMany thanks for helping us making the Android eco-system a better place!
53 | Help translate the app
54 |
55 | Make apps work
56 | The official DontKillMyApp app is here - make apps finally work properly even if you do not own a Pixel.
57 |
58 | Helps you set up your phone background tasks so that your apps can finally work for YOU even when not looking at the screen right now.
59 |
60 | See how is your phone doing and test different settings with DontKillMyApp benchmark.
61 |
62 | Features:
63 | • DKMA benchmark: Measure how aggressively is your phone killing background apps
64 | • Guides: Get actionable steps to overcome most background process restrictions
65 | • Make a change:️Help smartphones stay smart by sharing your benchmark report to dontkillmyapp.com
66 |
67 | DontKillMyApp is a benchmark tool to see how well does your phone support background processing. You can measure before setting up your phone, then go through the setup guides and benchmark again to see how much has your phone been slacking in the background.
68 |
69 | You can share your report through the app to the maintainers of the dontkillmyapp.com website who compile it and base the overall negative score on it.
70 |
71 | How does the benchmark work? (Technical!)
72 |
73 | The app starts a foreground service with a wake lock and schedules repetitive task on the main thread, a custom thread executor and schedules regular alarms (AlarmManager.setExactAndAllowWhileIdle). Then it calculates executed vs. expected. That\'s it!
74 |
75 | For more details check the code. The app is open source available at https://github.com/urbandroid-team/dontkillmy-app
76 | Special thanks to Doki (github.com/doubledotlabs/doki).
77 |
78 | Allow exact alarm scheduling
79 |
80 | Please allow us to schedule exact alarms to properly test yoru device alarm-based background processing.
81 | Ops, something when wrong.
82 | Benchmark running
83 |
84 |
85 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
46 |
47 |
52 |
53 |
58 |
59 |
60 |
65 |
66 |
69 |
70 |
73 |
74 |
78 |
79 |
83 |
84 |
88 |
89 |
90 |
113 |
114 |
115 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | ext.kotlin_version = '1.6.21'
4 | repositories {
5 | google()
6 | jcenter()
7 | }
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.4.2'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 |
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | google()
20 | mavenCentral()
21 | maven { url 'https://jitpack.io' }
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | The official DontKillMyApp app is here - make apps finally work properly even if you do not own a Pixel.
2 |
3 | Helps you set up your phone background tasks so that your apps can finally work for YOU even when not looking at the screen right now.
4 |
5 | See how is your phone doing and test different settings with DontKillMyApp benchmark.
6 |
7 | Features:
8 | • DKMA benchmark: Measure how aggressively is your phone killing background apps
9 | • Guides: Get actionable steps to overcome most background process restrictions
10 | • Make a change:️Help smartphones stay smart by sharing your benchmark report to dontkillmyapp.com
11 |
12 | DontKillMyApp is a benchmark tool to see how well does your phone support background processing. You can measure before setting up your phone, then go through the setup guides and benchmark again to see how much has your phone been slacking in the background.
13 |
14 | You can share your report through the app to the maintainers of the dontkillmyapp.com website who compile it and base the overall negative score on it.
15 |
16 | How does the benchmark work? (Technical!)
17 |
18 | The app starts a foreground service with a wake lock and schedules repetitive task on the main thread, a custom thread executor and schedules regular alarms (AlarmManager.setExactAndAllowWhileIdle). Then it calculates executed vs. expected. That's it!
19 |
20 | For more details check the code. The app is open source available it https://github.com/urbandroid-team/dontkillmy-app
21 |
22 | Special thanks to Doki (github.com/doubledotlabs/doki).
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/fastlane/metadata/android/en-US/images/featureGraphic.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | The official DontKillMyApp app is here - make apps finally work properly even if you do not own a Pixel.
2 |
3 | Helps you set up your phone background tasks so that your apps can finally work for YOU even when not looking at the screen right now.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | DontKillMyApp ✌️ Make apps work
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/video.txt:
--------------------------------------------------------------------------------
1 | https://www.youtube.com/watch?v=pRrGzH1YZ8s
2 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
20 | # Kotlin code style for this project: "official" or "obsolete":
21 | kotlin.code.style=official
--------------------------------------------------------------------------------
/ressrc/store-listing/ss1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/ressrc/store-listing/ss1.png
--------------------------------------------------------------------------------
/ressrc/store-listing/ss2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/ressrc/store-listing/ss2.png
--------------------------------------------------------------------------------
/ressrc/store-listing/ss3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/ressrc/store-listing/ss3.png
--------------------------------------------------------------------------------
/ressrc/store-listing/ss4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/ressrc/store-listing/ss4.png
--------------------------------------------------------------------------------
/ressrc/store-listing/ss5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/urbandroid-team/dontkillmy-app/70861cee6c185613f68c49c5bf23cd510386a888/ressrc/store-listing/ss5.png
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "dontkillmyapp"
--------------------------------------------------------------------------------