为什么不在Mainactivity线程上完成?

时间:2017-08-29 06:15:04

标签: android

呼叫onDestory - >还在工作线程 测试设备OS 8.0

为什么不停止后台工作8.0?

我知道Android 8.0后台工作无效。

以下是示例代码:

true

1 个答案:

答案 0 :(得分:0)

如果你使用简单的处理程序更新UI而不是线程,并在destroy上使用remove回调,会发生什么。这是一个使用handler的示例代码。试试这个。

private int mCount = 0;
private Runnable mRunnable;
private Handler mNewHandler;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mNewHandler = new Handler();
    mRunnable = new Runnable() {
        @Override
        public void run() {
            try {
                Log.e("test", "mCount : " + mCount + "  Status : ");
                mCount++;
                Toast.makeText(MainActivity.this, mCount + "", Toast.LENGTH_SHORT).show();
            } catch (Exception e) {
                Log.e("Exception", "");
                e.printStackTrace();
            } finally {
                mNewHandler.postDelayed(mRunnable, 1000);
            }
        }
    };
    mRunnable.run();
}

@Override
public void onDestroy() {
    mNewHandler.removeCallbacks(mRunnable);
    super.onDestroy();
}

如果你想使用线程尝试在destroy上添加这段代码。

thr.interrupt();