java spuštění metody při nečinnosti

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Václav Sedlář
Žlutá karta Bazar
Žlutá karta Bazar
Registrován: 01. dub 2006
Bydliště: Liberec
Kontaktovat uživatele:

java spuštění metody při nečinnosti

Příspěvek od Václav Sedlář »

Dobrý den, dělám jeden program v javě (používám graf.rozhraní,ne consoli...)....vše funguje,ale potřeboval bych nějak udělat, že když běží ten program a třeba 5 minut se nic neděje s PC (žádný pohyb s myší apod...), tak aby se spustila v tom programu nějaká metoda....je to vůbec možné nějak udělat?a jak?

Děkuji za pomoc...


P.S.: Program totiž dělám pro mamku a v tom programu mám tlačítko na "zamknutí" urč. fcí. toho programu, jenže mamka na to zapomíná a někdy odejde od PC a nechá ho odemčen...a k tomu potřebuju tu fci. aby udělala po x minutách nečinnosti to, co se stane při klepnutí na tlačítko pro uzamčení programu...
Stary88
Nováček
Nováček
Registrován: 27. dub 2011

Re: java spuštění metody při nečinnosti

Příspěvek od Stary88 »

Nevim jestli je to jeste aktualni, ale reseni podle me neni slozite. Jestli to ma byt Desktopova aplikace jak jsem pochopil tak bych to resil asi takhle:

Na zacatek musi aplikace implementova tyto rozhrani:
...

Kód: Vybrat vše

implements MouseListener, Runnable

...
Pri startu aplikace pridam na mainPanel Listenera:
...

Kód: Vybrat vše

mainPanel.addMouseListener(this);
...
pote jiz jen implementuju vsechny metody a vylam v nich jednu metodu kde se bude pocitat cas:

Kód: Vybrat vše

public void mouseClicked(MouseEvent e) {
        lastAction();
    }

    public void mousePressed(MouseEvent e) {
        lastAction();
    }

    public void mouseReleased(MouseEvent e) {
        lastAction();
    }

    public void mouseEntered(MouseEvent e) {
        lastAction();
    }

    public void mouseExited(MouseEvent e) {
        lastAction();
    }

    public void lastAction() {
        if (!lock) {
            lock = true;
            cal = Calendar.getInstance();
            timeStart = cal.getTimeInMillis();
            Thread t = new Thread(this);
            t.start();
        }

    }

    public void run() {
        while (true) {
            try {
                cal = Calendar.getInstance();
                timeEnd = cal.getTimeInMillis();
                if (timeEnd > timeStart + 5000) {
                    zamkni();
                    lock = false;
                    break;
                }
                Thread.sleep(100);
            } catch (InterruptedException ex) {
                Logger.getLogger(DesktopApplication1View.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    private void zamkni() {
        System.out.println("Zamknul jsem");
    }
Po necinosti po dobu ktera je v podmince se vyvola metoda zamkni tod vse :-)
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: java spuštění metody při nečinnosti

Příspěvek od OndraSter »

while (true) {
....
Thread.sleep(100);



?!
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
Stary88
Nováček
Nováček
Registrován: 27. dub 2011

Re: java spuštění metody při nečinnosti

Příspěvek od Stary88 »

Uznavam ze to asi neni uplne idealni, ale myslim ze zde zcela dostacujici. Vlakno se na chvili uspi, aby rezije cyklu while klesla co nejmin. Zalezi jak velky casovy usek se bude merit pokud pujde o minuty muzese se vklakno klidne uspat i na pul minuty. Ja osobne v tom nevidim problem...
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: java spuštění metody při nečinnosti

Příspěvek od OndraSter »

Co třeba Timer v AWT a při každém eventu myši/klávesnice/... ho vyresetovat na 0? :roll:

(Javu neznám, takhle bych to řešil já v C#.)

A pak ještě system-wide hook, ale ten nevím, jestli vůbec v Javě jde, popř jestli obsahuje něco jako InterOP helpera jako .NET.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
Stary88
Nováček
Nováček
Registrován: 27. dub 2011

Re: java spuštění metody při nečinnosti

Příspěvek od Stary88 »

Druha moznost ktera me napadla byl prave Timer, ale zadany problem bych resil proste pomoci vlakna a whilu. Urcite je vice moznosti jak si s tim poradit a ja zvolil tuto a stojim si za ni :-D
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: java spuštění metody při nečinnosti

Příspěvek od OndraSter »

Já bych stál za timerem - už jen proto, že by měl (pokud není Java VM implementován ještě hůře, než vypadá) používat systémový časovač a během čekání využívat přesně 0% procesoru ;-) . Cokoliv s while(true) a Thread.Sleep() bude něco žrát a ubírat režiji ostatním aplikacím.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: java spuštění metody při nečinnosti

Příspěvek od arxeiss »

Nechci se hádat, ale myslím Thread.Sleep() bude taky využívat systémové časovače. Přece jenom o to, který proces apod... příjde na řadu, o tom rozhoduje systém, proto myslím, že využívá časovače.

Jina while(true) ani náhodou, viz výše
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: java spuštění metody při nečinnosti

Příspěvek od OndraSter »

Thread.Sleep ano, ale ta kontrola kolem ve while(true) bude požírat CPU :P
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
Václav Sedlář
Žlutá karta Bazar
Žlutá karta Bazar
Registrován: 01. dub 2006
Bydliště: Liberec
Kontaktovat uživatele:

Re: java spuštění metody při nečinnosti

Příspěvek od Václav Sedlář »

jů díky za odpovědi...hned jak se k tomu dostanu tak budu zkoušet...
Odpovědět

Zpět na „Programování a web“