2014-01-12 37 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请检查我的更新。如果这个答案解决了你的问题,那么在我的答案旁边打勾。 –

相关问题