Этот класс обработчика должен быть статическим, иначе могут возникнуть утечки - уточните мой случай - PullRequest
0 голосов
/ 28 января 2019

Этот вопрос обсуждался много раз, но я хочу уточнить мой конкретный случай.

public class LoggerActivity extends Activity
{
...
    private Thread mInnerThread = new Thread()
    {
        public void run()
        {
        ...
            try
            {
            ...
                String line = "";
                while ((line = bufferedReader.readLine()) != null && !isInterrupted())
                {
                    mUIHandler.sendMessage(mUIHandler.obtainMessage(0, line))
                }
            ...
            }
            catch (InterruptedException ex)
            {
            }
        }

       mUIHandler = new Handler()
        {
            @Override
            public void handleMessage(Message msg)
            {
                mLoggerView.append((String)msg.obj + "\n");
            }
        };

        ...

    @Override
    protected void onDestroy()
    {
        mInnerThread.interrupt();
        super.onDestroy();
    }
}

Только InnerThread может отправлять сообщения на mUIHandler, но я прерываю его на onDestroy.Я думаю, что все в порядке, пока все сообщения из InnerThread будут обработаны, прежде чем GC-IN mUIHandler ....

Итак, вы можете подтвердить, что этот код ясен, и я могу спокойно игнорировать предупреждение?

...