Да кажем, че имам Activity1, която създава прост потребителски обект CustObject. CustObject не препраща към никакъв контекст или подобен тип обект. След това искам да предам този екземпляр на Activity2, като го задам като статична променлива в Activity2. Разгледайте съответния код:
public class CustObject {
private int attr;
public CustObject(int arg) { // takes only integers and Strings
attr = arg;
}
}
Ето първата дейност:
public class Activity1 extends Activity {
private CustObject co;
@Override
protected void onCreate(Bundle b) {
co = new CustObject(42);
}
public void launchActivity2() {
Activity2.co = co;
startActivity(new Intent(this, Activity2.class);
}
}
И ето втората дейност:
public class Activity2 extends Activity {
public static CustObject co;
@Override
protected void onCreate(Bundle b) {
// stuff
}
// Do operations on the co object.
}
Така че моята мисъл е, че когато стартираме Activity2, ние само „изтичаме“ на съобекта - който е търсен - но останалата част от Activity1 и неговия контекст могат да бъдат събрани боклук, ако е необходимо, без никакви проблеми/течове, нали?
Имайте предвид, че искам да го направя по този начин, защото CustObject co вероятно ще бъде променен от Activity2 и бих искал тези промени да се показват автоматично в Activity1, ако не е бил убит. Ако е бил убит, тогава работи, защото всичко ще бъде презаредено и промените в CustObject в Activity2 също са съхранени в база данни.
Благодаря ти за помощта!
PS: Също така, винаги съм се чудил дали стартирането на дейност чрез даване на „това“ като контекст за намерение е изтичане на родителската дейност??
startActivityForResult
и след товаsetResult
, последвано отonActivityResult
- person OneCricketeer   schedule 04.08.2016this
като параметърContext
при създаване наIntent
не причинява изтичане на памет.Context
се използва само за извличане на името на пакета наComponent
за стартиране. Не се съхранява вIntent
. - person David Wasser   schedule 05.08.2016Context
, който искате в конструктораIntent
с 2 аргумента. Няма абсолютно никаква разлика. - person David Wasser   schedule 06.08.2016grepcode.com
. Потърсете себе си. Или просто помислете: нямате нужда отContext
, за да започнете другоActivity
сIntent
. Можете да създадетеIntent
с помощта на конструктора с един аргумент, който просто задава ДЕЙСТВИЕТО. - person David Wasser   schedule 07.08.2016