안드로이드 앱 데이터 삭제 - andeuloideu aeb deiteo sagje

안드로이드 앱 데이터 삭제 - andeuloideu aeb deiteo sagje

캐시 지우기와 데이터 지우기의 차이점

캐시 지우기와 데이터 지우기의 차이점 삭제 캐시 삭제 데이터 절차의 결과가 다르기 때문에 장치의 구성은 동일하지 않습니다. 차이점과시기를 살펴 보겠습니다.

색인

  • 1 캐시 지우기와 데이터 지우기의 차이점 : 명심하십시오.
    • 1.1 캐시 란 무엇입니까?
      • 1.1.1 캐시를 지우는 이유
      • 1.1.2 캐시를 지우는 것은 장치에서 데이터를 지우는 것을 의미하지 않습니다
    • 1.2 데이터
      • 1.2.1 데이터를 삭제하는 이유
      • 1.2.2 데이터를 삭제하면 영구적으로 삭제됩니다

캐시 지우기와 데이터 지우기의 차이점 : 명심하십시오.

캐시 란 무엇입니까?

캐시는 액세스 속도를 높이기 위해 임시 검색 데이터가 저장되는 곳입니다. 방문한 사이트 이전에. 웹 사이트를 방문하거나 열 때마다 응용 프로그램, 데이터는 캐시 메모리. 그래서 그들에게 돌아 오면 브라우저 다시로드 할 필요가 없습니다. 이렇게하면 시간이 절약되고 웹 사이트의 생산성이 향상되므로 시작 프로세스가 더 빠르게 응답합니다. 이것은 장치에서 캐싱의 은색 라이닝입니다.

캐시를 지우는 이유

캐시를 지우는 것이 중요합니다. 메모리 공간 확보 장치. 메모리가 가득 차면 장치 성능이 저하됩니다. 따라서 브라우저의 캐시를 정기적으로 지우면 장치 메모리의 여유 공간을 확보하고 성능을 향상시킬 수 있습니다.

캐시를 지우는 것은 장치에서 데이터를 지우는 것을 의미하지 않습니다

캐시 지우기 의미하지 않는다 장치에서 식별 데이터 또는 기타 데이터 (예 : 다운로드 한 앱 또는 구성된 구성. 이것이 귀하의 질문 인 경우 캐시는 임시 파일의 메모리 만 해제하므로 안심하십시오. 인터넷웹 사이트 방문, 앱 열기, 게임 등

데이터

데이터는 추가 한 모든 것 장치로 사용 첫날부터 : 로그인, 비밀번호, 다운로드 한 응용 프로그램, 환경 설정, 사용자 정의 등 삭제하면 메모리에서 영구적으로 삭제됩니다. 따라서이 작업을 수행하기로 결정하기 전에 나중에 데이터를 검색 할 수 없으므로 신중하게 생각하십시오. 예를 들어, 질투심 많은 YouTube 즐겨 찾기가 제거되었습니다. 사이트를 다시 열면 이전에 YouTube에 가입 ​​한 적이없는 것처럼 보입니다. 진행중인 게임은 새로운 게임을 시작합니다. 삭제는 영구적으로 삭제하는 것을 의미합니다.

데이터를 삭제하는 이유

데이터 삭제 결정을 잘 고려해야합니다. 그것을 위해 예약하십시오 극한 상황 방법 팔다 장치, 바이러스 침입의 결과, 장치 또는 특정 응용 프로그램의 오작동 등을 해결합니다. 로그인 문제가 있는데 해결할 수 없습니까? 재설정을 위해 가능한 모든 솔루션을 시도 했습니까? 응용 프로그램 중 하나가 제대로 작동하지 않습니까? 캐시를 지우고 해결하지 않았습니까? 이 작업으로 해결할 수있는 문제입니다.

데이터를 삭제하면 영구적으로 삭제됩니다

데이터를 삭제하면 기기, PC, 휴대 전화 또는 태블릿 등 기기에서 영구적으로 삭제됩니다. 회복의 기회가 없다. 각 장치에는 이러한 작업을 수행하기위한 특정 경로가 있습니다. 방법을 알아 보려면 설정을 확인하십시오.

public static void clearApplicationData(Context context) {
        File cache = context.getCacheDir();
        File appDir = new File(cache.getParent());
        if (appDir.exists()) {
            String[] children = appDir.list();
            for (String list : children) {
                Log.d("캐시삭제 ", list);
                if(list.equals("shared_prefs")) continue;
                deleteDir(new File(appDir, list));
            }
        }
    }

    private static boolean deleteDir(File dir) {
        if (dir != null && dir.isDirectory()) {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        return dir.delete();
    }

이렇게 코드가 있는데요.

우선 주목하실것이 clearApplicationData 함수의 로그와 조건문 입니다.

해당 로그를 한번 보시면

캐시삭제: cache 
캐시삭제: shared_prefs 
캐시삭제: app_webview 
캐시삭제: code_cache 
캐시삭제: files 
캐시삭제: no_backup 
캐시삭제: databases 
캐시삭제: app_textures

그럼 이중 내가 삭제하지 말아야 할 부분을 빼고 삭제해야 한다고 하시면

if(list.equals("shared_prefs")) continue;

조건문에 이처럼 적어주시면 됩니다.

저는 쉐어드프리퍼런스 값을 남기고 삭제하고싶어서 이렇게 조건을 작성했습니다.

1개가 아니라 2개이상이시면 그 밑에 else if로 쭉 나열해서 적어주시면 해당부분은 반복문에서 컨티뉴로 건너뛰고 실행되니,

삭제가 안됩니다.

사용 하실 때는 

clearApplicationData(getApplicationContext());

이렇게 적어주시면 끝입니다.

출처

https://ddolcat.tistory.com/26

http://blog.naver.com/PostView.nhn?blogId=netrance&logNo=221224761858&parentCategoryNo=&categoryNo=95&viewDate=&isShowPopularPosts=true&from=search

앱을 삭제했을 때 shared preference 데이터를 삭제하는 방법How to remove shared preference while application uninstall in android

앱을 삭제 후 재설치하게 되면 공유환경 설정(shared preference)에서 일부 데이터가 복원되는 증상이 요즈음 나온 최신 폰에서 발생하고 있습니다.

즉, 앱을 삭제 후 재설치하면, 삭제 전에 저장되었던 자료들이 남아있는 문제가 발견되고 있습니다.

원인은 바로 자동 백업 "BackupManager" 때문 -- android:allowBackup 속성 true로 자동 설정

Android API 23(또는 Android "6.0" 또는 Android "Marshmellow")이후 BackupManager는 공유 환경 설정을 포함한 앱의 모든 데이터를 클라우드에 저장합니다.

이는 안드로이드 6.0부터는 AndroidManifest.xml 파일에서 application 요소의 android:allowBackup 속성을 명시하지 않으면 자동으로 true로 설정하기 때문인데 이로 인해 사용자도 모르게 데이터가 구글 클라우드에 자동으로 백업됩니다.

결국 앱 삭제 후 재설치하면, 자료가 자동으로 복원되다 보니 환경설정(preferences)에 저장된 자료가 되살아 나는 것입니다.


해결방법

1. 안드로이드 폰에서 직접 해제 하는 방법이 있습니다.
   설정 > 백업 및 재설정 > 자동복원을 선택, 자동복원 해제 를 하는 방법입니다.
   그러나 이 방법은 장치에 설치된 모든 응용 프로그램의 자동 백업기능을 해제하기 때문에 권장하지 않습니다.

안드로이드 앱 데이터 삭제 - andeuloideu aeb deiteo sagje


2. 앱 소스에서 매니페스트 파일로 이동, application 태그에서 "allowBackup" 속성을 찾아서 false로 설정하는 것입니다.


앱의 데이터 자동 백업을 막는 방법

1. AndroidManifest.xml 파일을 여세요.

2. application 요소에 android:allowBackup 요소를 추가하고, 값을 false로 설정하세요.

android:allowBackup="false"

3. application 요소에 android:fullBackupContent 요소를 추가하고, 값을 false로 설정하세요.

android:fullBackupContent="false"

4. (옵션) 프로젝트에 다른 플러그인이 있는 경우, allowBackup 속성이 충돌할 수 있습니다.

    이 경우 application 요소에 tools:replace 속성을 추가하고, 값은 "android:allowBackup"으로 설정합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          package="패키지명">

    <uses-feature
        android:name="android.hardware.camera"
        android:required="true"/>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


......


    <application
        android:name=".MyApp"

        android:allowBackup="false"
        android:fullBackupContent="false"
        tools:replace="android:allowBackup"
        
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true"
        tools:replace="android:icon">

......


    </application>

</manifest>

참고로 android:fullbackupOnly="false" 기능은 안드로이드 API 21 이후 폰에서 설정, 사용가능합니다.

안드로이드 앱 데이터 삭제 - andeuloideu aeb deiteo sagje

<기타 참고 사이트>

https://stackoverflow.com/questions/33169618/an-android-app-remembers-its-data-after-uninstall-and-reinstall

https://developer.android.com/guide/topics/data/autobackup.html

http://androbook.tistory.com/entry/%EB%8B%A4%EC%8B%9C-%EC%82%B4%ED%8E%B4%EB%B3%B4%EB%8A%94-%EB%A7%A4%EB%8B%88%ED%8E%98%EC%8A%A4%ED%8A%B8-%EC%86%8D%EC%84%B1%EB%93%A4