1
onDestory - >まだ動作しているスレッド テストデバイスOS 8.0Mainactivityスレッドでこれが終了しないのはなぜですか?
なぜバックグラウンド作業8.0を停止しないのですか?
私はAndroid 8.0のバックグラウンドが動作していないことを知っています。
あなたの代わりに、スレッドのUIを更新し、destroy.This上でコールバックを取り除く使用するように簡単なハンドラを使用している場合はどうなりますか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");
}
}
pls。 https://stackoverflow.com/questions/10544515/how-to-stop-a-running-thread-when-activity-on-destroy-at-android –
これは実際にはメモリリークです。あなたは外部クラスへの参照を保持している非静的な内部クラスを作成しています、それはまた、ガベージコレクションのためにあなたのメインアクティビティ参照がマークされていません –
これはメモリリークパターンです。 Android 8.0はGCのコンテンツを更新します。背景作品は限られています。この場合、無制限のバックグラウンドで作業していますか? –