Как открыть определенное SMS в андроиде

Существует не так известный угловой случай со сборщиками "мусора" поколений. (Поскольку краткое описание прочитало ответ , benjismith для более глубокого понимания прочитал статьи в конце).

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

Теперь, проблема возникает из того, что объекту не позволяют иметь ссылки на младшие объекты. Когда долговечное (старое поколение) объект получает ссылку на новый объект, та ссылка должна быть явно прослежена сборщиком "мусора" (см. статью от IBM на коллектор JVM горячей точки ), на самом деле влияя на производительность GC.

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

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

Статьи:

IBM на сборке "мусора": история , в горячая точка JVM и производительность . Они больше не могут быть полностью допустимыми, поскольку это датируется в 2003/04, но они дают некоторым легким считать понимание GCs.

Sun на Настраивающаяся сборка "мусора"

13
задан Janusz 29 December 2010 в 19:01
поделиться

2 ответа

threadId должен быть идентификатором цепочки SMS / MMS, которую вы хотите просмотреть

Intent defineIntent = new Intent(Intent.ACTION_VIEW); 
defineIntent.setData(Uri.parse("content://mms-sms/conversations/"+threadId));  
myActivity.startActivity(defineIntent);

Это самый простой способ, который я нашел

{ {1}}
9
ответ дан 2 December 2019 в 00:18
поделиться

Я извлек это из исходного кода для приложения обмена сообщениями ( строки 311–315 ), так что я почти уверен, что это » Я буду работать, но у меня нет опыта с этим.

// threadId should be the id of the sms/mms thread you want to view
long threadId = 0; 
Intent i = new Intent("com.android.mms");
i.setData(
        Uri.withAppendedPath(
                i.getData(), Long.toString(threadId)
        )
);
i.setAction(Intent.ACTION_VIEW);
2
ответ дан 2 December 2019 в 00:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: