Как убедиться что стало лучше?
Используй Performance testing plugin.
Опиши сценарий и проверяй на нем.
Проверь версию AS
Android Studio | Check for updates
@Composable | |
fun keyboardAsState(): State<KeyboardState> { | |
val keyboardState = remember { mutableStateOf(KeyboardState.Closed) } | |
val view = LocalView.current | |
val viewTreeObserver = view.viewTreeObserver | |
DisposableEffect(viewTreeObserver) { | |
val onGlobalListener = ViewTreeObserver.OnGlobalLayoutListener { |
Как убедиться что стало лучше?
Используй Performance testing plugin.
Опиши сценарий и проверяй на нем.
Проверь версию AS
Android Studio | Check for updates
Hi All! | |
I've recently launched a tool that wraps many of the commands here with a user interface. This desktop application is currently available for macOS. There's a roadmap outlining planned features for the near future. | |
Feel free to request any features you'd like to see, and I'll prioritize them accordingly. | |
One of the most important aspects of this application is that every command executed behind the scenes is displayed in a special log section. This allows you to see exactly what’s happening and learn from it. | |
Here's the link to the repository: https://github.com/Pulimet/ADBugger | |
App Description: | |
ADBugger is a desktop tool designed for debugging and QA of Android devices and emulators. It simplifies testing, debugging, and performance analysis by offering device management, automated testing, log analysis, and remote control capabilities. This ensures smooth app performance across various setups. |
//Place this script inside your application module build.gradle | |
//It will create a new task(s) based on your application variants within (run) group | |
//sample: ./gradlew installRunDebug | |
//sample: ./gradlew installRunStagDebug | |
project.afterEvaluate { | |
android.applicationVariants.all { variant -> | |
task "installRun${variant.name.capitalize()}"(type: Exec, dependsOn: "install${variant.name.capitalize()}", group: "run") { | |
commandLine = ["adb", "shell", "monkey", "-p", variant.applicationId + " 1"] | |
doLast { |
You can use this class to realize a simple sectioned RecyclerView.Adapter
without changing your code.
The RecyclerView
should use a LinearLayoutManager
.
You can use this code also with the TwoWayView
with the ListLayoutManager
(https://github.com/lucasr/twoway-view)
This is a porting of the class SimpleSectionedListAdapter
provided by Google
Example:
/* | |
* Copyright 2014 Chris Banes | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software |
NOTE: Easier way is the X86 way, described on https://www.genymotion.com/help/desktop/faq/#google-play-services | |
Download the following ZIPs: | |
ARM Translation Installer v1.1 (http://www.mirrorcreator.com/files/0ZIO8PME/Genymotion-ARM-Translation_v1.1.zip_links) | |
Download the correct GApps for your Android version: | |
Google Apps for Android 6.0 (https://www.androidfilehost.com/?fid=24052804347835438 - benzo-gapps-M-20151011-signed-chroma-r3.zip) | |
Google Apps for Android 5.1 (https://www.androidfilehost.com/?fid=96042739161891406 - gapps-L-4-21-15.zip) | |
Google Apps for Android 5.0 (https://www.androidfilehost.com/?fid=95784891001614559 - gapps-lp-20141109-signed.zip) |
import java.util.*; | |
import java.io.*; | |
import java.security.*; | |
public class ChangePassword | |
{ | |
private final static JKS j = new JKS(); | |
public static void main(String[] args) throws Exception | |
{ |
pm list packages -f |