2012-01-13 2 views
0

У меня есть приложение, использующее background service.its, работающее четко. Если мой мобильный телефон выключен, мой сервис отключен. Когда мое приложение запущено, тогда выполняется только моя фоновая служба. Я хочу перезапустить службу еще раз, когда мобильный выключатель выключен? Возможно ли это? Любой объяснить с кодомКак запустить приложение в Android при включении мобильного телефона?

обновление

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); 
         } 


         } 
     } 
       } 

} 

ответ

0

Регистрация для ACTION_BOOT_COMPLETED (see here for details). Запустите службу при загрузке.

+0

receiver = new ConnectionReceiver(); registerReceiver (приемник, новый IntentFilter (ConnectivityManager.CONNECTIVITY_ACTION)); запустите мою службу, как это, и мой <приемник android: name = "ConnectionReceiver"><намерение-фильтр><действие android: name = "android.intent.action.BOOT_COMPLETED"> мой файл манифеста. Но мой сервиз не установлен. – Mercy

0

создать широковещательный приемник, который с намерением выполнить BOOT COMPLETED.

смотрите следующие ссылки для получения дополнительной помощи:

  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);  
    } 
    } 

и использовать broadcastreciever в AndroidManifest.xml, как

<receiver android:name=".receiver.BootReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 
</receiver> 
+0

receiver = new ConnectionReceiver(); registerReceiver (приемник, новый IntentFilter (ConnectivityManager.CONNECTIVITY_ACTION)); начать свою службу, как это и мой <приемник андроид: имя = "ConnectionReceiver"> \t <намеренных фильтр> \t \t <действие андроид: имя = "android.intent.action.BOOT_COMPLETED"> \t \t \t \t \t \t \t мой файл манифеста. Но мой servie не является staretd. – Mercy

+0

, где вы смотрите на службу, maeant, где вы положили намерение на запуск службы в HOME? пожалуйста, введите код .. – jenuine

+0

сэр я обновляю свой код – Mercy