1

最初のアクティビティで onCreate を実行する更新ルーチン (サーバーに接続し、それ自体の新しいバージョンを探す) があります。更新がある場合は、ユーザーにダイアログが表示され、更新が必須でない場合は、更新をダウンロードするかどうかを尋ねられます。

問題は、デバイスが回転したときなど、アクティビティがリロードされるたびに呼び出されるため、アクティビティでこれを実行したくないことです。

チェックがすでに実行されているかどうかを知るシングルトンを作成することもできますが、アクティビティの外でチェックを行うことをお勧めします。

私が抱えている問題は、それを android.app.application に入れた場合、ダイアログを作成するアクティビティがないことです。このためだけにローダー アクティビティを作成し、その後メイン アクティビティを起動することもできますが、これも理想的ではないようです。

このシナリオを処理する良い方法は何でしょうか?

4

2 に答える 2

2

残念ながら、アプリケーション コンテキストからアクティビティを起動することはできません。あなたがする必要があるのは、アクティビティを作成することです

android:theme="@android:style/Theme.Dialog"

AndroidManifest.xml のアクティビティ タグ内。このアクティビティでは、かなり単純なレイアウトを定義して、できるだけダイアログのように見えるようにする必要があります (別のように見せたい場合はそうではありません)。

もう 1 つのオプションは、最初のアクティビティを BroadcastReceiver に設定してから、Application コンテキストを設定することです。

sendBroadcast(new Intent("MyUniqueID"));

BroadcastReceiver の onReceive メソッド内で、Activity コンテキストを使用してダイアログを表示します。

于 2013-02-09T03:33:06.440 に答える
0

crdnilfan は良い答えを出しています。MainActivity でそれを行いたい場合は、ここonCreate()で説明されているように適切な方法でアクティビティのライフサイクルを維持できます。また、デバイスを回転するたび に呼び出しを制限したい場合は、configChanges を指定できます。

        <activity
        android:name="com.example.temp.MainActivity"
        android:configChanges="orientation"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

参考になれば幸いです!!

于 2013-02-09T05:35:10.397 に答える