0

はい、バックグラウンド サービスを使用するアプリケーションがあります。それは明確に実行されています。モバイルのスイッチがオフの場合、サービスはサービス オフになっています。アプリケーションが開始されると、バックグラウンド サービスのみが開始されます。モバイルの切り替え時にサービスを再起動したいオフ?出来ますか?誰でもコードで説明

アップデート

public class loginForm extends Activity 
{
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView (R.layout.login);
receiver = new ConnectionReceiver();
 registerReceiver(receiver,new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
 }

private class ConnectionReceiver extends BroadcastReceiver{

        private Timer mTimer;
        private TimerTask mTimerTask;

        @Override
        public void onReceive(Context context, Intent intent) {
                NetworkInfo info = intent.getParcelableExtra         (ConnectivityManager.EXTRA_NETWORK_INFO);

                if(null != info)
                {
                        String state = getNetworkStateString(info.getState());
                        if(state.equals("Connected")){
                            mTimer = new Timer();
                            mTimerTask = new TimerTask() {
                                @Override
                                public void run() {
                                    loginForm.this.runOnUiThread(new Runnable() {

                                        @Override
                                        public void run() {

                                            //Toast.makeText(getBaseContext(), "Disenabled provider " + provider,
                                                    ///Toast.LENGTH_SHORT).show();  
                                            try{
                                            insertAllGpsInformation();
                                            }
                                            catch(Exception e)
                                         {
                                            Toast.makeText(getBaseContext(), "Your Net Connected or Not Login to Net"+"", Toast.LENGTH_LONG).show();
                                            Log.e("Upload Picture Error:",e.getMessage());
                                         }
                                        }


                                    });

                               }
                            };
                            mTimer.scheduleAtFixedRate(mTimerTask,180000,180000);
                        }


                        }
        }   
                }

}
4

3 に答える 3

0

BroadcastReceiver を登録し、BOOT_COMPLETED インテントを探す必要があります。

詳細のリンクは次のとおりです。http://androidgps.blogspot.com/2008/09/starting-android-service-at-boot-time.html

あなたの質問を正しく理解しましたか?

于 2012-01-13T09:15:25.173 に答える
0

BOOT COMPLETED アクションのインテントを持つ Broadcast Receiver を作成します。

詳細については、次のリンクを参照してください。

  1. http://blog.gregfiumara.com/?p=82
  2. http://marakana.com/forums/android/examples/60.html

使用できます

public class BootReceiver extends BroadcastReceiver
{
   @Override
   public void onReceive(Context context, Intent intent)
   {
      // TODO Auto-generated method stub
      Log.i("BootReceiver :: Start Booting..");

      Intent i = new Intent(context, StartService.class);    // Start your service class
           i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
           context.startActivity(i);    
   }
   }

androidmanifest.xml のブロードキャストレシーバーを次のように使用します。

<receiver android:name=".receiver.BootReceiver">
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 
</receiver>
于 2012-01-13T09:18:01.977 に答える
0

に登録しますACTION_BOOT_COMPLETED(詳細はこちらをご覧ください)。起動時にサービスを開始します。

于 2012-01-13T09:13:50.627 に答える