2014-01-12 76 views
0

我正在做一個簡單的恐嚇你的朋友應用程序。你必須按一個按鈕,然後設置一個分鐘計時器,然後在屏幕上顯示經典的exorsist圖標和尖叫。我試圖把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(); 
      } 
     }); 

    } 
} 

我真的很新的到Android所以不要說使用服務或東西,因爲我不知道是什麼那是。我發現的其他答案對我來說太高級了,請儘量解釋!

回答

2

無法真正讓您的應用免於關機。所有不是系統應用程序的應用程序都會忽略屬性「android:persistent」。這就是說,爲了確保應用程序在給定時間後觸發意圖,您可能必須將啓動代碼放置在serivce中(如果可能的話)。

0

使用服務並不是很難。只需創建一個新課程並添加extends Service。完成之後,您應該添加此方法:

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

在此方法中,您可以啓動媒體播放器。要停止服務,您只需在onDestroy()中放入stopSelf()。祝你好運!

0

而不是使用Activity您可以使用總是在後臺運行的Service。請參閱此答案以瞭解如何創建僅包含活動的應用程序。 Android app with Service only。作爲解決方案,您可以創建一個無活動內容視圖或透明佈局,然後在此活動中啓動該服務,然後使用finish()快速關閉該活動。

現在在服務中,您可以使用您正在嘗試在活動中使用的確切代碼。但請記得在顯示com.odysseus.myapp.SCARER後停止服務。

更新: - 在你com.odysseus.myapp.SCARER活動顯示您可以使用下面的命令停止服務的代碼之後。

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

我該如何阻止它? – user3164859

+0

@ user3164859請檢查我的更新。如果這個答案解決了你的問題,那麼在我的答案旁邊打勾。 –

相關問題