Android-приложение самопроизвольно уходит на задний план на Minix Neo X7

Я создал приложение, целью которого является отображение некоторой информации, получаемой с сервера через HTTP GET каждую секунду. Он работает в полноэкранном режиме и не спит. Какая-то информационная доска. Он отлично работает на телефонах и планшетах, но мне нужно, чтобы он работал на Minix Neo X7/8. На Minix он просто самопроизвольно уходит в фоновый режим через пару минут и работает некоторое время в фоновом режиме после того, как эта система убивает его.

Как заставить это работать на Minix? Я понятия не имею, почему происходит такая магия.

--- Обновление --- Это полный источник приложения.

public class MainActivity extends Activity
{
    private final String URL = "http://192.168.1.5:8080";
    private final String SOUND_FILE_NAME = "file:///mnt/usb_storage/USB_DISK0/udisk0/events/sound.mp3";

    //--------------------------------------------------------------------
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        createScene();
        startPolling();
    }

    //--------------------------------------------------------------------
    private void createScene()
    {

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        setContentView(R.layout.main);

        WebView view = (WebView) findViewById(R.id.MainWebView);
        view.setWebChromeClient(new WebChromeClient());
        view.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode,
                                        String description,
                                        String failingUrl)
            {
                new Timer().schedule(new TimerTask() {
                    @Override
                    public void run() {
                        WebView view = (WebView) findViewById(R.id.MainWebView);
                        view.loadUrl(URL);
                    }
                }, 5000);
                super.onReceivedError(view, errorCode, description, failingUrl);
            }
        });
        view.clearCache(true);
        view.clearHistory();
        view.getSettings().setJavaScriptEnabled(true);
        view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        view.loadUrl(URL);
    }

    //--------------------------------------------------------------------
    private void startPolling()
    {
        _http_client = new DefaultHttpClient();

        _timer = new Timer();
        _timer.schedule(new TimerTask() {
            @Override
            public void run() {
                try {
                    HttpResponse response = _http_client.execute(new HttpGet(URL + "/info"));
                    StatusLine statusLine = response.getStatusLine();
                    if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                        ByteArrayOutputStream out = new ByteArrayOutputStream();
                        response.getEntity().writeTo(out);
                        String payload = out.toString();
                        out.close();

                        Log.d("GK", "got payload " + payload);
                        String data = "{\"data\":" + payload + "}";
                        Log.d("GK", "parsing " + data);

                        JSONObject json = new JSONObject(data);
                        JSONArray info = json.getJSONArray("data");

                        final int maxInfo = 3;
                        if (info.length() > maxInfo) {
                            File f = new File(Uri.parse(SOUND_FILE_NAME).getPath());
                            if (f.exists() && !f.isDirectory()) {
                                startAudio(SOUND_FILE_NAME);
                            }
                        } else {
                            stopAudio();
                        }
                    } else {
                        stopAudio();
                        //Closes the connection.
                        response.getEntity().getContent().close();
                    }
                } catch (Exception e) {
                    stopAudio();
                }
            }
        }, 0, 1000);
    }

    //--------------------------------------------------------------------
    private Boolean isPlaying() { return _player != null && _player.isPlaying(); }

    //--------------------------------------------------------------------
    private void startAudio(String audioUri)
    {
        if (!isPlaying())
        {
            _player = MediaPlayer.create(this, Uri.parse(audioUri));
            _player.setOnCompletionListener(new musicCompletionListener());
            _player.start();
        }
    }

    //--------------------------------------------------------------------
    private void stopAudio()
    {
        if (isPlaying()) { _player.stop(); }
    }

    //////////////////////////////////////////////////////////////////////
    // classes
    //--------------------------------------------------------------------
    private class musicCompletionListener implements MediaPlayer.OnCompletionListener
    {
        public void onCompletion(MediaPlayer player)
        {
            if (_player != null)
            {
                _player.release();
                _player = null;
            }
        }
    }

    private MediaPlayer _player;
    private HttpClient _http_client;
    private Timer _timer;
}

Спасибо заранее.

0 ответов

Другие вопросы по тегам