1

これが状況です。サービスを開始するAndroidアクティビティがあります(サービスはファイルの送受信などを目的としています)。サービスsendMessage()は、Activityクラスオブジェクトで作成されたハンドラーを介してActivityに送信されます。次に、アクティビティには、サービスが含むビューで実行している現在のアクションのステータスが表示されます。

ここに問題があります

  1. 活動開始
  2. アクティビティがグローバルオブジェクトにハンドラーを作成しました
  3. アクティビティがサービスを開始します-
  4. アクティビティを介したユーザーは、ファイルの送受信プロセスを開始するようにサービスに命令します
  5. サービスは現在ビジーであり、グローバルオブジェクトを介して取得したハンドラーを介してUIにメッセージを送信しています
  6. アクティビティはMessage()を受信して​​処理し、UIで状態を公開します
  7. ユーザーは私のアクティビティをバックグラウンドに送信します(別のアプリを使い始めた可能性があります)
  8. このプロセス中に、Androidはおそらく私のアクティビティを強制終了しますが、サービスはビジー/実行中です
  9. その間にサービスが終了します
  10. しばらくすると、ユーザーはアクティビティを開きます。
  11. (問題)アクティビティがonCreateで開始されると、アクティビティはサービスの最後のステータスを認識していません。正常に終了したか、失敗したか、またはその他のステータスが最後のステータスであるかどうか。
4

2 に答える 2

2

それはあなたがサービスを始めた方法、あなたがどのように進めるべきかによります。

最も単純な状況を想定すると、サービスは同じプロセスでモードで実行され、アクティビティからSTART_STICKY呼び出すまでサービスはメモリに残ります。stopService()

この場合、サービスの現在のステータス(つまり、開始されていない、実行中、エラー、終了など)を格納するクラスレベルの静的変数を作成し、アクティビティからテストできます。

よろしく。

于 2012-11-15T01:06:22.110 に答える
0

SharedPreferences、SQLite、テキストファイル、または単に静的変数またはアプリケーションインスタンスの変数/フィールド(コードの任意の場所でgetInstanceにアプリケーションのシングルトンを実装します)。静的変数とアプリケーションインスタンスは、Androidによって強制終了されると、メモリ内の状態を失います。

于 2012-11-15T01:06:34.810 に答える