AndroidでコンソールJavaアプリケーションを起動します



これは、Javaを勉強していて、フィールド(地下鉄、ミニバス、カフェなど)でサンプルコードの作業を表示するために常にPCを持っているわけではない人に役立つユーティリティプロジェクトになります。

OCJP認定の準備をしていたときに、この共有を作成する必要が生じました。 それを正常に完了した後、レビューのためのアイデアの成果を尊敬されるhabrasocietyのメンバーに提供することにしました。

私はラップトップを持っていないので、お茶を飲みながらキッチンに座ってスマートフォンでコード例を実行すると便利です。

たまたま、ほとんどのトレーニング例は通常、コンソールプログラムの形式で提供されています。 素晴らしいAIDEツールを使用すると、Eclipseプロジェクトに基づいてAndroidアプリケーションを構築できます。 残念ながら、コピーアンドペースト方式を使用してコンソールの例を実行するには機能が不十分です。

ポイントは小さい-I / OフローをUIコントロールにリダイレクトする:

private static OutputStream mOutputStream = new OutputStream() { @Override public void write(int b) { MainActivity.getInstance().write((byte)b); } }; @Override public void onCreate(Bundle savedInstanceState) { ... System.setOut(new PrintStream(mOutputStream)); System.setErr(new PrintStream(mOutputStream)); ... } 


コンソールプログラムは、アクティビティonResume()ハンドラーとは別のスレッドで開始されます。

  @Override public void run() { try { // //     // Program.main(new String[0]); } catch (Throwable ex) { //      setErrorColor(); ex.printStackTrace(); } } 


ここでは、コマンドライン引数-古き良き引数を指定できます。 例BankTellerSimulationを10秒間開始する:

 BankTellerSimulation.main(new String[] { "10" }); 


いくつかのスレッドの作業がサポートされています( SimpleThreadsTest ):



HorseRaceBankTellerSimulationは、より複雑なマルチスレッドアプリケーションの例です( Thinking in Javaの4th Ed by Bruce HorseRaceからBankTellerSimulation )。

ランタイムエラー

ErrorTest例:

 class FuuuuuuException extends RuntimeException { public FuuuuuuException(String message) { super(message); } } ... throw new FuuuuuuException("!!!TROLLFACE!!!"); 


例外が発生します:



入る

最後に、完全を期すために、コンソール入力が追加されました。 これまでのところ、Androidユーザーインターフェースに関する私の知識はあまり良くありません。 どういうわけか私はEditTextをプッシュすることができましたが、結果は完璧ではありません:)

行入力プロンプト( ReadingInputTest ):



次:



メニュー機能

Exitは、 System.exit(0)介してプロセスをシャットダウンします。

「ワンタイム」プログラム。 再起動が繰り返されることはありません(静的フィールドの値のクリーニングに煩わ​​されたくありませんでした)。

クリアを大きな秘密にしたもの。

動作しないもの

•のJavaをassertます。 つまり オペレーター

 assert "Cat".equals("Dog"); 

例外java.lang.AssertionErrorはスローされません。 JUnitのアサーターと混同しないように-すべては問題ありません!)
Consoleクラス。
•入力フィールドが常にフォーカスをキャッチするとは限りません。

プロジェクトファイル

ソースはGitHubから取得するか、Android StudioおよびEclipse用のプロジェクトを含むzipアーカイブをダウンロードできます。

説明されている例はcom.examplesパッケージにあります。 すべての例は、通常のPCで変更なしで実行できます(どこでも実行できます!)。

Source: https://habr.com/ru/post/J162741/


All Articles