public class MyActivity extends Activity
{
Cursor myCursor;
ContentObserver myContentObserver;
@Override
public void onCreate(Bundle savedInstanceState)
{
//AnotherThread is not owned by MyActivity
AnotherThread.run(new Runnable(){
myCursor = getCursor(); //query something from db myContentObserver= new ContentObserver(new Handler())
{
@Override
public boolean deliverSelfNotifications() { return true; } @Override
public void onChange(boolean selfChange)
{
myCursor.requery(); //1
...............
}
};
myCursor.registerContentObserver(myContentObserver);
})
} @Override
public void onDestroy()
{
...................
}
}上边的程序里,AnotherThread的run中使用了MyActivity的成员,并注册了ContentObserver。我在断点调试过程中发现,MyActivity.onDestroy()被调用后(MyActivity被销毁),ContentObserver的回调onChange还会被触发。请问这时候的myCursor和myContentObserver跟MyActivity的还有关系么?他们是AnotherThread里的副本么?我是否应该应该在MyActivity.onDestroy()对myCursor和myContentObserver进行释放和unregister?
{
Cursor myCursor;
ContentObserver myContentObserver;
@Override
public void onCreate(Bundle savedInstanceState)
{
//AnotherThread is not owned by MyActivity
AnotherThread.run(new Runnable(){
myCursor = getCursor(); //query something from db myContentObserver= new ContentObserver(new Handler())
{
@Override
public boolean deliverSelfNotifications() { return true; } @Override
public void onChange(boolean selfChange)
{
myCursor.requery(); //1
...............
}
};
myCursor.registerContentObserver(myContentObserver);
})
} @Override
public void onDestroy()
{
...................
}
}上边的程序里,AnotherThread的run中使用了MyActivity的成员,并注册了ContentObserver。我在断点调试过程中发现,MyActivity.onDestroy()被调用后(MyActivity被销毁),ContentObserver的回调onChange还会被触发。请问这时候的myCursor和myContentObserver跟MyActivity的还有关系么?他们是AnotherThread里的副本么?我是否应该应该在MyActivity.onDestroy()对myCursor和myContentObserver进行释放和unregister?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货