1
Call onDestory - >仍然有效線程 測試設備OS 8.0爲什麼不在Mainactivity線程上完成?
爲什麼它不停止後臺工作8.0?
我知道Android 8.0後臺工作無法正常工作。
下面是示例代碼:
import android.content.Intent;
import android.support.v7.app.`enter code here`AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Thread thr = new Thread(new Runnable() {
@Override
public void run() {
try{
// why not stop after on Destroy
while(true) {
Log.e("test", "count : " + count+" Status : ");
count++;
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,count+"",Toast.LENGTH_SHORT).show();
}
});
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thr.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("test","Main activity Destory");
}
}
。請參閱https://stackoverflow.com/questions/10544515/how-to-stop-a-running-thread-when-activity-on-destroy-at-android –
這實際上是一個內存泄漏。你正在創建一個非靜態的內部類,它持有對外部類的引用,它也阻止你的主要活動引用被標記爲垃圾回收 –
我知道這是內存泄漏模式。但Android 8.0更新GC的內容。和背景作品是有限的。所以在這種情況下無限使用後臺工作? –