-1

私はアプリケーション (extends) を持っており、ビーコンを監視するためにバックグラウンドでいくつかのサービスを実行しています。範囲内か範囲外かを確認してから、いくつかのアクションを実行します。

アプリケーションには 1 つのアクティビティしかありません。それが設定アクティビティです。サービスは起動後に自動的に開始され、無期限に実行されます。ユーザーがアプリを開こうとしたときに、正しいパスワードが提供されない限り、SettingsActivity は使用可能にならないようにする必要があります。

onPause() と onResume() で、パスワードを要求するダイアログを起動したいと思います。正しいパスワードが入力されると (Retrofit がこれをチェックしてブール値を返します)、SettingsActivity へのアクセスが許可されます。

問題: 自分のアクティビティを onPause() で非表示にする方法と、パスワードを修正した後に再び表示する方法 (onResume() でダイアログを起動する方法)。

私は1つの解決策を考えることができ、それは私のsettings_view.xmlに別のビューを追加し、親を埋めて、正しいパスワードとVISIBILITY.VISIBLE @ onPause()の後にVISIBILITY.GONEを設定します。onPause() でこれを行いたいのは、最近のアプリ画面に移動したときに何も「見る」ことができないためです。しかし、これは非常にずさんな解決策のようです。

とにかく、onPause() でレイアウトをブラックアウト/ティントし、正しいパスワードを入力した後にブラックアウト/ティントを削除できますか?

アドバイスをありがとう:)

4

2 に答える 2

0

問題: 自分のアクティビティを onPause() で非表示にする方法と、パスワードを修正した後に再び表示する方法 (onResume() でダイアログを起動する方法)。

これについては、残りのアクティビティ ライフサイクルを考慮する必要があります。インターネットから情報を取得している場合、アプリケーションで多くの問題が発生する可能性があります。信号が悪い、ネットワークが利用できない、またはネットワーク接続アダプターがオフになっている可能性があります。

代わりにこれを考えてみましょう: Activity "login" onCreate: 必要なファイルと送信ボタンを使って当たり障りのないアクティビティを作成します。送信したら、ネットワークの状態とログインに使用しているものを照会します。次に、結果をしばらく保存します (たとえば、1 日または 30 分など、アプリケーションに最適な方法を考えてください)。通常は、SharedPreferencesが行います。

アクティビティ "SettingsActivity" onResume: 保存されたデータでユーザーがアクティビティを表示できるかどうかを確認します。そうでない場合は、アクティビティを終了し、「ログイン」を開始します。

于 2015-10-23T10:43:52.937 に答える