2014-01-12 5 views
0

Я делаю простой пугаю приложение для вашего друга. Вам нужно нажать кнопку, а затем установить минутный таймер, который затем отобразит на экране классический значок экзорциста и крик. Я пытался ставить android:persistent="true", но это не работает ... Вот моя активность:Как я могу сохранить приложение для Android в фоновом режиме

package com.odysseus.myapp; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

    MediaPlayer scareMusic; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button startTimer = (Button) findViewById(R.id.btimerStart); 
     scareMusic = MediaPlayer.create(MainActivity.this, R.raw.monster_scream); 

     startTimer.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Thread scareTimer = new Thread(){ 
        public void run(){ 
         try{ 
          sleep(5000); 
          Intent activityIntent = new Intent("com.odysseus.myapp.SCARER"); 
          startActivity(activityIntent); 
         }catch(InterruptedException e){ 
          e.printStackTrace(); 
         } 
        } 
       }; 
       scareTimer.start(); 
      } 
     }); 

    } 
} 

Я действительно новым для андроид, так что не только сказать, использовать услугу или что-то, потому что я не знаю, что то есть. Другие ответы, которые я нашел, были слишком продвинутыми для меня, поэтому, пожалуйста, объясните как можно больше!

ответ

2

Невозможно по-настоящему сделать ваше приложение защищенным от выключения. Атрибут «android: persistent» игнорируется для всех приложений, которые не являются системными приложениями.

При этом, чтобы убедиться, что приложение запускает намерение по истечении заданного времени, вам, вероятно, придется поместить стартовый код в serivce (если возможно, тогда).

0

Использовать услуги не очень сложно. Просто создайте новый класс и добавьте extends Service. Когда вы это сделаете, вы должны добавить этот метод:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) {  
     //Your code here 
     return START_STICKY;  
    } 

В этом способе вы можете запустить медиаплеер. Чтобы остановить службу, вы просто положили stopSelf() в onDestroy(). Удачи!

0

Вместо использования Activity вы можете использовать Service, которые всегда работают в фоновом режиме. См. Этот ответ о том, как создать приложение, которое просто имеет активность. Android app with Service only. В рамках работы вы можете создать представление «Без содержимого» или прозрачный макет, затем в этом действии запустите службу, а затем быстро закройте ее, используя finish().

Теперь в Сервисе вы можете использовать точный код, который вы пытаетесь использовать в Activity. Но не забудьте остановить службу после показа com.odysseus.myapp.SCARER.

Обновление: - В вашей com.odysseus.myapp.SCARER активности после того, как показывает код, который вы можете использовать следующую команду, чтобы остановить службу.

stopService(new Intent(this, service.class)); 
+0

Как я могу остановить его после? – user3164859

+0

@ user3164859 проверьте мое обновление. И если этот ответ решит вашу проблему, отметьте отметку рядом с моим ответом. –

Смежные вопросы