0

情况:活动在后台执行一些操作Thread。当活动关闭时,android 也会杀死线程。我想将线程停止写入日志。有回调吗?(覆盖 interrupt() 和 destroy() 不起作用)或者我应该使用AsyncTask代替?

UPD: 线程代码

private class InternalReader extends Thread {

    @Override
    public void run() {
        final int size = mReader.getDataSize();
        final int blockSize = 10240;
        int offset = 0;
        TextFileCacher.DataBlock db = new TextFileCacher.DataBlock();
        db.data = new char[blockSize];
        int read = mReader.readString(offset, db.data, -1);
        mListener.onRenderStarted();
        mListener.onRenderReady();
        while (read > 0){
            db.size = read;
            mCacher.processData(db);
            offset+=read;
            mListener.onProgress(offset/size);
            read = mReader.readString(offset, db.data, -1);
        }
        mListener.onRenderReady();
    }
}

异步任务代码

private class InternalReader extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... arg0) {
        final int size = mReader.getDataSize();
        final int blockSize = 10240;
        int offset = 0;
        TextFileCacher.DataBlock db = new TextFileCacher.DataBlock();
        db.data = new char[blockSize];
        int read = mReader.readString(offset, db.data, -1);
        mListener.onRenderStarted();
        mListener.onRenderReady();
        while (read > 0){
            db.size = read;
            mCacher.processData(db);
            offset+=read;
            mListener.onProgress(offset/size);
            read = mReader.readString(offset, db.data, -1);
        }
        mListener.onRenderReady();
        return null;
    }

}

初始化

(new InternalReader()).start();

(new InternalReader()).execute();
4

0 回答 0