Есть ли в Android способ очистки данных приложения без сбоев приложения?Если нет, как я могу снова автоматически запустить приложение? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь очистить данные с помощью:

(ContextHack.appContext().getSystemService(ACTIVITY_SERVICE) as ActivityManager).clearApplicationUserData()

, но это вызывает сбой.Вы знаете лучший подход?

По сути, я хочу отключить устройство BT и при этом очистить все данные, не прерывая работу приложения.

 pairingButton.setOnClickListener {

                        val alertDialog = AlertDialog.Builder(this.activity!!)
                        alertDialog.setIcon(R.drawable.dialog_logo)
                        alertDialog.setTitle(Strings.unpairWatchConfirmation)
                        alertDialog.setMessage(Strings.unpairWatchConfirmationMsg)

                        alertDialog.setPositiveButton(Strings.confirmAction) { dialog, id ->
                            (ContextHack.appContext().getSystemService(ACTIVITY_SERVICE) as ActivityManager)
                                   .clearApplicationUserData()
                            activity!!.toast(Strings.watchRemoved)
                        }
                        alertDialog.setNegativeButton(Strings.cancel) { dialog, id ->
                            dialog.dismiss()
                        }
                        alertDialog.show()
                    }

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019
1. You can call this method[deleteAppData()] to clear app cache:

    public static void deleteAppData(Context context) {
 try {
 File dir = context.getCacheDir();
 deleteDir(dir);
 } catch (Exception e) {}
}

public 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();
 } else if(dir!= null && dir.isFile()) {
 return dir.delete();
 } else {
 return false;
 }

} 
0 голосов
/ 27 сентября 2019

Очистка памяти приводит к закрытию приложения, поскольку при удалении файлов из-под него оно может быть в плохом состоянии.Вместо этого, поскольку это ваше собственное приложение, просто напишите функцию для запуска из базы вашего внутреннего хранилища и пройдитесь по структуре каталогов, удаляя каждый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...