Унутраныя вяшчае на андроіда

Ёсць магчымасць запуску вяшчання з вобласцю ўжывання? Гэта значыць: вяшчае непрыкметнае з прыкладання?

Я выкарыстаў эфір для зносін некаторых падзей у карыстацкі інтэрфейс. Але ў апошні час я замяняю некаторыя з майго кода для іншага прыкладання, і я выявіў, што вяшчанне прачынаюцца абодва прыкладання (як і чакалася). Так цікава, калі ёсць спосаб абысці гэта, акрамя змены значэння «дзеянняў» Намеры

2

6 адказы

Вы павінны выкарыстоўваць <моцны> LocalBroadcastManager , яго лепшая альтэрнатыва звычайнай трансляцыі, калі вы хочаце унутры- паведамленне прыкладання праходзілае. Прачытайце гэты пост для рэалізацыі: як выкарыстоўваць LocalBroadcastManager ?.

3
дададзена

Чаму б вам не выкарыстоўваць назіральніка-назіраным шаблон мець зносіны паміж класамі ява ў вашым дадатку?

2
дададзена
Гэта не з'яўляецца добрым рашэннем у Android, паколькі гэта вельмі схільна да ўцечак памяці. Калі элемент карыстацкага інтэрфейсу, напрыклад, дзейнасці, з'яўляецца назіральнікам, ёсць шмат сітуацый, калі вы не можаце правільна выдаліць яго, перш чым актыўнасць перапрацоўваюцца. Напрыклад, калі актыўнасць будзе забітая або аварыямі сістэмным, вы можаце па-ранейшаму трымаць спасылку на яго ў вашым назіраным.
дададзена аўтар Janus Varmarken, крыніца

Выкарыстоўвайце LocalBroadcastManager . Вам трэба будзе ўключаць у сябе бібліятэку падтрымкі, але гэта выдатнае рашэнне для вырашэння гэтай праблемы, паколькі гэта з'яўляецца больш эфектыўным, чым адпраўка глабальнага вяшчання праз сістэму.

1
дададзена

Я думаю, вы павінны змяніць сваё дзеянне, калі вы карыстаецеся setComponent, што гэта відавочнае намер, а затым, калі гэта добра для вас гэта будзе працаваць, але для няяўна намеры вы не можаце абмежаваць з дапамогай прыкладання

Існуе CyanogenMod, дзе вы можаце падпісаць дадатак, і вы можаце прадухіліць ўстаноўка аб'ектываў прыкладанняў у вашым тэлефоне з другога сігнатурай, што азначае тыя, што вы нешта ўсталяваць на тэлефоне, ніхто не зможа ўсталяваць новае дадатак (акрамя вас), і гэта можа restasure, што ні адзін зарэгіструе прыёмнік з тым жа імем дзеянні, як вы

нататка: выкарыстоўваючы для трансляцыі сярод сувязі ў дадатку няправільна і павольней, чым звычайны выклік да працэдуры (што магчыма ў вашым выпадку). Я не бачу прычын, чаму вы не павінны рабіць звычайны выклік.

1
дададзена

@Lukap: Подпіс прыкладання з'яўляюцца адным з асноўных элементаў у усе Android версіі, каб толькі ўпаўнаважаныя асобы прадастаўляць абнаўлення/змены для ўсталяванага прыкладання.

Dev Guide:

<Р> Усе заяўкі павінны быць падпісаныя. Сістэма не будзе ўсталяваць прыкладанне на эмулятары або прыладзе, калі ён не падпісаны.

плюс:

<Р> Заўвага: з дапамогай трансляцыі для ўзаемасувязі ў дадатку няправільна

This is wrong. There are a number of reasons to use broadcast inside an application, and some situations where you really cannot live without it.

1
дададзена

Так, вы можаце выкарыстоўваць імя кампанента з дапамогай Intent.setComponent() .

Але калі ваша трансляцыя заўсёды будзе ў працэсе, няма неабходнасці выкарыстоўваць яго, ці не так? Вы можаце проста выкарыстоўваць выклік просты старой функцыі ...

1
дададзена