0%

使用场景

有的时候我们需要在一个activity1中销毁另一个制定的activity2。或者是在程序的某个位置销毁所有的activity,达到退出整个app的目的

阅读全文 »

Handler防止内存泄露

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class MainActivity extends AppCompatActivity {
private MyHandler mHandler = new MyHandler(this);
private TextView mTextView ;
private static class MyHandler extends Handler {
private WeakReference<Context> reference;
public MyHandler(Context context) {
reference = new WeakReference<>(context);
}
@Override
public void handleMessage(Message msg) {
MainActivity activity = (MainActivity) reference.get();
if(activity != null){
activity.mTextView.setText("");
}
}
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView)findViewById(R.id.textview);
loadData();
}
//loadData()方法是在子线程中,执行
private void loadData() {
//...request
Message message = Message.obtain();
mHandler.sendMessage(message);
}

@Override
protected void onDestroy() {
super.onDestroy();
//如果你的Handler被delay(延时了),可以做如下的处理
mHandler.removeCallbacksAndMessages(null);
}
}
阅读全文 »