0
public class BootUpReceiver extends BroadcastReceiver{
@Override
public void onReceive(final Context context, Intent intent) {

     //Delay 10 sec so that device could establish network
     Intent i = new Intent(context, SplashActivity.class);  
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     context.startActivity(i);                

         }

}

Androidの起動時にアクティビティを開始していますが、Androidはネットワーク接続を確立するのに時間がかかるため、アプリの起動を10秒遅らせて、アプリがインターネットを使用できるようにします.

4

3 に答える 3

0

ランダムな遅延 (信頼できない) を発生させる代わりに、ネットワーク状態の変化を検出できる別の BroadcastReceiver を使用する必要があります。例: NetworkStateReceiver。これにより、ネットワークの状態が変更されたことが検出されます。こちらをご覧ください: INTENT インターネット接続を確認してください

したがって、アプリケーションには、BootupReceiver と NetworkStateReceiver の 2 つの BroadcastReceiver が必要です。

BootUpReceiver の onReceive() で、設定のいくつかのフラグを true に設定します。次に、NetworkStateReceiver の onReceive() でフラグを確認し、フラグが true の場合は、Activity を開き、フラグを false に設定します。

(BroadcastReceiver の SharedPreferences に値を設定するには、「broadcastreceiver 内の共有設定」を参照してください)

これは機能しますが、Activity を自動的に開始するための良い方法ではありません。ユーザーは気に入らないかもしれません。

于 2013-10-14T17:32:44.057 に答える
0

この種のバックグラウンド処理を実行するためのベスト プラクティスは、スプラッシュ スクリーンを作成し、特定の時間の重いアクティビティの開始時にさまざまなアニメーションや魅力的なものを使用してロードすることです。そのため、ユーザーはバックグラウンド プロセスが完了するまで待つことができます。

あなたのアプローチには、多くのコーディングが必要なようです。

これが役立つことを願っています。

于 2013-10-14T17:23:14.570 に答える