幽灵线程解决方案
幽灵线程:activity被destroy了,但是activity里面线程的方法还在循环。这样会导致浪费资源。
出现原因:页面中图片加载太慢,我直接退出了activity。
解决方法:加个判断,如果页面被destroy,那么页面中的run方法不能被执行。
1 package com.example.d8_05; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.os.Looper; 7 import android.util.Log; 8 9 public class MainActivity extends Activity { 10 private boolean flag=true; 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.activity_main); 15 new MyTh().start(); 16 } 17 18 class MyTh extends Thread { 19 @Override 20 public void run() {// 模拟打开网络图片 21 for (int i = 1; i <= 100; i++) { 22 if(!flag) 23 break; 24 25 try { 26 Thread.sleep(1000); 27 Log.d("bh", "打开了" + i + "%"); 28 } catch (InterruptedException e) { 29 e.printStackTrace(); 30 } 31 } 32 } 33 } 34 @Override 35 protected void onDestroy() { 36 super.onDestroy(); 37 flag=false; 38 } 39 }
其它:
handle有方法可以在子线程里面更新activity,
post虽然写在子线程中,但是是被主线程所调用。所以可以用来执行主线程才能执行的页面更新等操作。
但是这样会有啥问题,我们需要用removeCallbacks来使用。