0

私は Android 開発の初心者で、タスクとアクティビティに関するドキュメントを読んだ後、アプリケーションを正しく動作させることができません。

(まず、私の英語でごめんなさい)

私のアプリケーションはLOGINNEWSの 2 つのアクティビティで構成されています。どちらのアクティビティの起動方法も singleTask です。

NEWSアクティビティはAndroid通知チュートリアルの標準通知コードでonCreateで通知を作成します!

int icon = R.drawable.notification_icon;        // icon from resources
CharSequence tickerText = "Hello";              // ticker-text
long when = System.currentTimeMillis();         // notification time
Context context = getApplicationContext();      // application Context
CharSequence contentTitle = "My notification";  // expanded message title
CharSequence contentText = "Hello World!";      // expanded message text

Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

最初にアプリケーションを開いたとき:

ログイン--> onResume() --> NEWS --> onCreate() --> 通知

コード付き

Intent newLogAct = new Intent(Login.this, News.class);
TomTuckerActivity.this.startActivity(newLogAct);

Back * NEWS *を叩くと破壊され、再び:

ログイン--> onResume() --> NEWS --> onCreate() --> 通知

(私はそのループが好きではありません、それを使用する理由は最後に説明されています)

ホームをクリックすると、メインメニューに戻り、ここから理解できないことを始めます。

通知を使用してアプリケーションを再起動しても問題はなく、onCreate を呼び出さずに通知を送信せずにNEWSウィンドウが再度開かれます。

NEWSを呼び出すときにアプリケーション アイコンを使用すると、onCreate() が再度呼び出されて通知が再度送信されるため、singleTask オプションは役に立たないようです。

私が望むのは、通知またはアイコンを使用して、残したアプリケーションを回復することです。

newLogAct のフラグで問題を解決できますか?

両方のアクティビティで singleTask 起動オプションを使用しても問題ありませんか?


戻るボタンのループ問題について:

ループを回避するために、onResume() の代わりに onCreate() を使用することを考えました。ただし、アプリケーション アイコンでアプリケーションを再起動すると、LOGINはロードされますが、onCreate は呼び出されないため、NEWSはロードされません。

それを解決する他の方法はありますか?

多分 onNewIntent() メソッドで?

4

1 に答える 1

0

あなたの問題 (または少なくともその一部) は次のように思われます: アプリケーションを終了した場所に通知を戻す方法。

通知はこのように使用されることは想定されていません。通知をクリックすると、通知を処理することを目的とした新しいアクティビティが開始されます。

離れた場所のアプリケーションに戻りたい場合 (私はそうしています)、次のトリックを使用できます (これが良い方法かどうかはわかりませんが、機能し、それほどハッキングされているようには見えません)。 :メソッド内でAutodestructwhich と呼ばれるアクティビティを作成し、通知でこのアクティビティを実行します。これにより、ダミー アクティビティが上にあるバック スタックが復元され、ダミー アクティビティがすぐに削除されます。finish()onCreate()

于 2011-07-13T12:22:10.373 に答える