2014-01-12 2 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(); 
      } 
     }); 

    } 
} 

무엇 그건. 내가 찾은 다른 답변은 나에게 너무 앞서 있기 때문에 최대한 많은 것을 설명해주십시오!

답변

2

진정으로 앱을 종료 방지 할 수있는 방법이 없습니다. 시스템 앱이 아닌 모든 앱에서 'android : persistent'속성이 무시됩니다.

주어진 시간이 지나면 애플리케이션이 의도를 실행하는지 확인하려면 시작 코드를 서비스에 배치해야합니다 (가능한 경우에도 가능).

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()을 사용하여 활동을 신속하게 닫으십시오.

이제 서비스에서 활동에 사용하려는 정확한 코드를 사용할 수 있습니다. 그러나 com.odysseus.myapp.SCARER을 표시 한 후에 서비스를 중지하는 것을 잊지 마십시오.

업데이트 : - 당신의 com.odysseus.myapp.SCARER 활동에 당신이 서비스를 중지하려면 다음 명령을 사용할 수있는 코드를 보여주는 후.

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

어떻게 중지 할 수 있습니까? – user3164859

+0

@ user3164859 내 업데이트를 확인하십시오. 그리고이 대답이 당신의 문제를 해결하면 내 대답 옆에있는 진드기를 표시하십시오. –

관련 문제