2017-02-21 7 views
1

Я делюсь данными между двумя моим приложением, это мой код для получения данных из общей прив в приложении Обмена данных между двумя приложениями с использованием SharedPreferences

try { 
     final Context mContext = createPackageContext("com.example.demo", Context.MODE_PRIVATE); 
     final String val = mContext.getSharedPreferences("pref_name",Context.MODE_PRIVATE).getString(MY_KEY,""); 
     Log.e("sharedtest",val); 
     finish(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

этот код находится внутри OnCreate (), у меня больше нет кода. Моя проблема заключается в том, что если я сохраню некоторое значение в своем приложении B, а затем запустит мое приложение A сохраненные данные были правильно восстановлены в первый раз после получения данных, которые завершила моя деятельность (у меня есть только одно действие) , и если я запустил свой значок запуска и запустил свое приложение A, то нет обновленных данных (это то же самое), где было изменено с приложения B.

также, если я убью свое приложение из настроек системного приложения и запустил его, как при первом запуске обновленных данных, здесь каждое изменение данных требует моего приложения, убивающего из настроек, как я могу это исправить? что мне не хватает?

+1

Более правильным решением этой проблемы будет с помощью контент-провайдера вместо использования общих ссылок. –

+0

Мне нужна только одна строка, почему бы не использовать предпочтения? –

ответ

0

Я нашел решение, это может быть трюк, но он отлично работает для меня, после моего приложения заканчивает свою работу, я звоню метод системного выхода.

System.exit(1); 

это делает приложение «А» будет выйти и закончить работу полностью

После того, что я имел самые последние обновленные данные в моих предпочтениях

+0

Lol, используйте 'finish()' –

+0

Вы не должны использовать System.exit в Android-контексте. Как сказал Florescu, используйте Finish() –

+0

Я вызываю это из службы, когда служба работает, активность уже мертва, после того, как служба запущена, я вызываю завершение из Activity –