• ベストアンサー

JAVA(Android)複数のActivity

Mac用Eclipseを用いてアプリを制作しております。(始めて数週間の初心者です。) Activityを2つ以上実装し、インテントで画面遷移するまでは良いのですが、画面遷移後に元のActivityの動作が停止(リセット)してしまいます。画面遷移後も元Activityをバックグラウンドで動作させる方法はありますでしょうか? 具体的には、元Activityでタイマーを使用し、使用したまま画面遷移を行い、またActivityに戻すとタイマーが0になってしまいます。 解決方法が御座いましたら回答宜しくお願い致します。

  • Java
  • 回答数1
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • KSOH
  • ベストアンサー率93% (29/31)
回答No.1

Androidについては経験がないので違っているかも知れませんが・・・ http://www.javadrive.jp/android/activity/index2.html 上記ページでActivityのライフサイクルの説明をみるにこれはアプリケーションが起動してからずっと存在し続けることが保障されるものではなくAndroid OSの都合によりストップさせられることがあるとのことです。Androidアプリケーションも他のGUIシステムと同様、画面に関する処理は特定のスレッド(UIスレッドかな?)でのみ行われるようですのでおそらくはActivityというのはUIスレッドでのみ実行される前提であって複数のActivityを複数スレッドで並行して動かすということはAndroidのプログラミングモデルに適合しないと思えます。 故にバックグラウンドで行いたい処理があるのであれば独自にスレッドを起こしてそこで行うことになると思います。その際はそのスレッドではバックグラウンド処理だけしかやってはならず画面にアクセスするような処理はUIスレッドへの処理のキューイングを通じて行うような感じだと思います。 http://techbooster.org/android/application/934/ このページをみてそう思いました。

albart1
質問者

お礼

返事が遅れてしまい、申し訳ありません。とても分かり易い解説有難う御座います。 参考にさせていただきたいと思います。

関連するQ&A

  • listview とactivity について

    android studio のアプリ制作でlistview とactivity についての使い方について、教えてください。初心者です。listview の画面と2つのactivities の遷移ぐらいだけは作成できます。 質問 : 20の国名をlistviewに並べて、各国名をクリックすれば、別の画面でその国の国旗の画像と簡単な説明文が読める内容です。新しいactivityを20個つくらずにする方法をわかりやすく教えてください。 ネットでずいぶん検索したんですが見当たりません。ある方から、”けんちんとん”さんというサイトを紹介されたのですが、少し古くかつeclipseなので設定が異なり、できませんでした。 初心者でわかりやすい動画やサイトが嬉しいのですが? よろしくお願いします。

  • androidの画面遷移について

    アンドロイドアプリケーションを開発しています。 アプリで以下のようにA画面から始まり3つのアクティビティを遷移するのですが A画面 → B画面 → C画面  ↑          ↓     ←  ←  ←  C画面からA画面に遷移させようとするとアプリケーションが止まってしまいます。 このとき画面は真っ黒またはA画面になり、タッチしても動作しません。 ログも停止します。 画面はすべてSurfaceViewで作っています。遷移はすべてIntentです。 Intentで同じ画面に戻るとき指定しなければ行けないことや、配慮しなければ いけないことがありましたら、教えてください。 ログも止まってしまうため、手がかりがない状態です。 これらのことが記載されているページや図書がありましたら教えていただけないでしょうか? 以上、よろしくお願いします。

  • Android アプリ

    同アプリのソースファイルで定義したViewを呼び出して表示後、そのViewを消すということがしたいです。 詳細は 【画面A】が起動したときに常駐する【画面Z】を起動 → 【画面A】から【画面B】に遷移した際に常駐している【画面Z】を停止(削除) という動作を完成したいので 常駐アプリを【画面A】のOnCreate()で Intent intent = new Intent(getApplication(), OverlapService.class); // 常駐Serviceの開始 startService(intent); として起動させていて 画面BのOnPause()に Intent intent = new Intent(getApplication(), OverlapService.class); // 常駐Serviceの停止 stopService(intent); としていますが画面Zは残ったままになります。 画面BのOnStop()もコードを記述してみましたが上手くいきません。 どなたかお詳しい方、ご教授よろしくお願いいたします。

  • eclipse-android(複数画面遷移)

    eclipseを使用してandroidアプリを作成しています。 画面遷移について ボタンを使用して3画面以上の遷移を行いたいのですが、 うまくいきません。 main->sub1とsub1->mainまでの遷移はできていますが、 main->sub1->sub2の画面遷移がどうしてもうまく行きません。 ググっても3画面以上の遷移方法がでていなく、 困っています。ご教授下さい。 javaとマニフェスト、string.xml細かく教えて下さい。

  • 画面遷移について

    早速質問なんですが、今 1.ホーム画面は地図(google Map)を表示、また画面遷移用のボタンを設置してある。 2.ボタンを押すとカメラを使う画面に遷移し、そこでとりあえず写真を撮る。(ここではカメラを実行するActivityと、SurfaceView を継承したクラスを別クラスにて実装しております。) 3.取った後に勝手に画面遷移させ(元のMap画面へ)、撮った写真の緯度、経度を取得したうえで現在地情報を表示させる。→表示させる際はFacebookなどにある、ピンをMap上に表示させるような感じで、さらにその場所の住所、画像も表示させる、といったイメージです。 このような仕様のアプリを作っております。簡単に言えば、写真を撮ったら現在地の情報がわかる!といったアプリです。 ここで、カメラ画面から元のMap画面に画面遷移させたいのですが、通常Activity間の画面遷移はIntentを使用するのが一般的ですが、この場合だとどのように実装すれば可能でしょうか? 自分としてはHandlerクラスのメンバをSurfaceView を継承したクラスで用意して、Activityに対してそのクラスを呼び出すコードを実装すれば行けるのかなぁ…と考えているのですが。 初対面でいきなりの質問で誠に申し訳ございませんが、ご回答お待ちしております。 必要であればプログラムコードもお送りいたします。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Androidの画面遷移ができません(その2)

    前回の質問の続きです. 今度はページXXXXXから3つのボタン(AAAAA,BBBBB,CCCCCと仮定)を画面上に表示させ,ボタンに記載された通りの各ページAAAAA,BBBBB,CCCCCに画面遷移しようと考えています. AAAAA,BBBBB,CCCCCにはそれぞれ異なった画像が表示されるようにプログラミングしてあるのですが,すべてのボタンを押してもページAAAAAに画面遷移してしまい困っています. おそらくAndroidManifest.xmlの定義が間違えているのではないかと思っているのですが,どこに原因があるのでしょうか?解答よろしくお願いします. 【AndroidManifest.xml】 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="sample.XXXXX" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="9" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".XXXXX" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="AAAAA"></activity> <activity android:name="BBBBB"></activity> <activity android:name="CCCCC"></activity> </application> </manifest>

  • Androidアプリ・SDKでの実行時エラー

    初めてアンドロイドアプリの開発をしています(多言語のプログラミング経験はありますが、JAVAは初めてです)。Eclipseで開発を行っていますが、ボタンをクリックしたら画面遷移をする、という処理を追加したところ、Android SDKで実行した際に 「アプリ名(パッケージ名)が予期せず停止しました。やり直してください。」 と出て、トップの画面も表示されなくなってしまいました。なお、Eclipse上ではエラーなどが出ていません。原因が解らず困っています。何かわかる方がいらっしゃいましたらお教え下さい。 以下がソースになります。 ■トップのActivity--------------------- package jp.xxxxx.xxxxx; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ボタンを定義 Button btn1 = (Button) findViewById(R.id.btn1); //クリックイベント btn1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent( getApplicationContext() , SubActivity.class); startActivity(intent); } }); } } ■トップ画面のXML--------------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"> <ImageView android:id="@+id/topLogo" android:src="@drawable/logo" /> <LinearLayout android:id="@+id/linearLayout1"> <TextView android:id="@+id/btn1" android:text="@string/btn1text"></TextView> </LinearLayout> </LinearLayout> ■トップのAndroidManifest.xml--------------------- <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.xxxxx.xxxxx" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:label="@string/app_name" android:name="MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:label="@string/screenName2" android:name="SubActivity"> </activity> </application> </manifest> なお、Activityの「//ボタンを定義」以下をコメントアウトした際には画面は出てきます。何か初歩的な間違いをしているかもしれませんが、どうかよろしくお願いします。

    • ベストアンサー
    • Java
  • Androidで画面遷移ができません.

    初心者ながら,Android向けにアプリを開発しています. ページXXXXXでボタンを表示させ,ページYYYYYで画像が表示されるようにしたいのですが,ページXXXXXで表示されたボタンを押すとエラーが出て強制終了となってしまいます. 画面遷移されるページ(YYYYY)には,適当な位置にタッチさせるとタッチした位置に移動する画像についてプログラミングしてあります.ページYYYYYは個別で実行すると正常に起動します. どこに原因があるのか教えてください.よろしくお願いします. ページXXXXXのソースは以下のとおりです. 【ソース】 import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.content.Intent; public class XXXXX extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent(XXXXX.this, YYYYY.class); startActivity(intent); } }); } }

    • ベストアンサー
    • Java
  • androidアプリを作成~画面遷移~

    eclipseでAndroidアプリを作成しようとしています。 ボタンを使用して3画面の画面遷移をさせたいのですが なかなかうまくいきません(汗) main->sub1までの画面遷移 sub1->mainまではできまるようになったのですが ググってもmain->sub1->sub2 と遷移させることができませんでした。 main->sub1->sub2 と遷移させた上で sub1からもsub2からもmainに 戻れるようなjavaとマニフェストをできるだけ細かく教えていただきたいのですが、 ご教授下さい。

  • javaとFlashの通信について

    初めて質問させていただきます。 現在JavaとFlashでWebアプリの勉強をしております。 JavaとFlash個々で単体として動作させることは 今までしてきました。 今回取り組んでいるのが、Flashで画面側を作成して、 Javaでサーバー側を作成するというものです。 現在は 画面側をFlashでサーバー側をJavaで作成していて、 サーバー側はXMLをFlashから受取り、XMLで返す。 画面側はXMLをJavaから受取り、XMLで返す。 そこまではわかるようになりました。 ここで質問なのですが、 Flashの動作として、「クラスを指定してそこに XMLを渡し、また受け取る」その方法がわかりません。 私が調べた中では、URLVariables クラスの使用、 XMLソケットを使用するという方法があることがわかったのですが、 URLVariablesを使用した場合、 送信先のURLを記入しないということで、Java側はまだeclipse上で 作成しただけなので、指定できないと考えていて、 XMLソケットを使用した場合、 接続方法まではインターネットで調べることができ実装することが できているのですが、そのあとのXMLで送受信する方法がなかなか 見つからず実装段階まで至っていません。 また、 サーバー側はサーバー側にアップしておかないと通信できないのか Flashと同じ保存場所でないといけないのかという点と その通信方法のActionScriptの書き方を教えていただけないでしょうか。 参考にさせていただきたいです。 宜しくお願い致します。 tomcat:6.0.18 eclipse:3.4.1 Flash:CS4 ActionScript:3.0 OS:Windows Vista

専門家に質問してみよう