2014-10-14 2 views
0

У меня есть служба, которая должна запускать приложение и считать каждые 15 секунд.Запуск приложения изнутри Служба

AlarmManager создать и вызвать службу каждая проблема 15 second.The когда я нажимаю класс кнопка запуска программы запуска службы и откройте приложение и начать считать, но когда я нажать кнопку остановки приложения получить ошибки

"Unfortunately, Program has stopped."

После этого программа автоматически начинает отсчет и открывает приложение , и я не могу это прекратить.

Я не могу понять. любая помощь или что-то новое может это сделать. Благодарю.

Myservice.java

import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.widget.Toast; 

public class Myservice extends Service{ 

    int counter=0; 

    public IBinder onBind(Intent arg0) 
    { 

     return null; 
    } 

    public void onCreate() { 

     Toast.makeText(getApplicationContext(), "Service Created", Toast.LENGTH_SHORT).show(); 

    } 

    @SuppressWarnings("deprecation") 
    public void onStart(Intent intent, int startId) 
    { 

      super.onStart(intent, startId); 

      Startapp(); 

      counter++; 

      Toast.makeText(getApplicationContext(), "Service Start : " + counter,Toast.LENGTH_SHORT).show(); 

    } 


    public void onDestroy() 
    { 

      Toast.makeText(getApplicationContext(), "Service Destroy", Toast.LENGTH_SHORT).show(); 

      super.onDestroy(); 

    } 


    public void Startapp() 

    { 
     Intent in = getPackageManager().getLaunchIntentForPackage("com.example.application"); 
     startActivity(in); 

     Toast.makeText(getApplicationContext(), "Counter : " + counter, Toast.LENGTH_SHORT).show(); 
    } 


} 

MainActivity.java

import java.util.Calendar; 
import java.util.List; 
import android.app.Activity; 
import android.app.ActivityManager; 
import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

import android.widget.Toast; 

public class MainActivity extends Activity { 




    Intent myIntent; 
    PendingIntent pendingIntent; 
    AlarmManager alarmManager; 

    Button btn1; 
    Button btn2; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 


     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 




     btn1 = (Button)findViewById(R.id.button1); 
     btn2 =(Button)findViewById(R.id.button2); 




     btn1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 



       myIntent = new Intent(MainActivity.this, Clash.class); 

       pendingIntent = PendingIntent.getService(MainActivity.this, 7778, myIntent, 0); 

       alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

       Calendar calendar = Calendar.getInstance(); 

       calendar.setTimeInMillis(System.currentTimeMillis()); 

       calendar.add(Calendar.SECOND, 10); 

       alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),15000, pendingIntent); 

       Toast.makeText(MainActivity.this, "Start Alarm", Toast.LENGTH_LONG).show(); 

      } 
     }); 


     btn2.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       alarmManager.cancel(pendingIntent); 
       pendingIntent.cancel(); 

       Toast.makeText(MainActivity.this, "Cancel!", Toast.LENGTH_LONG).show(); 
      } 
     }); 



} 
+0

удалить pendingIntent. Отмена(); –

+0

@kozaxinan Я пытаюсь удалить pendingIntent.cancel(); но все же ничего нет –

+0

call alarmManager = (AlarmManager) getSystemService (ALARM_SERVICE); перед alarmManager.cancel (pendingIntent); и проверьте pendingIntent для null. –

ответ

0

Вы должны установить этот флаг:

in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

Таким образом, ваш метод Startapp будет выглядеть следующим образом:

public void Startapp() 
{ 
    Intent in = getPackageManager().getLaunchIntentForPackage("com.example.application"); 
    in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(in); 

    Toast.makeText(getApplicationContext(), "Counter : " + counter, Toast.LENGTH_SHORT).show(); 
} 
+0

. Я уже делаю это, но все же запускаю программу и не останавливайтесь –

0

Попробуйте его работу .... установлен в кнопке остановки ... всегда в ожидании отмены намерения после создания его

alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
    myIntent = new Intent(MainActivity.this, MyService.class); 


    btn1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      pendingIntent = PendingIntent.getService(MainActivity.this, 7778, myIntent, 0); 

      try { 
       alarmManager.cancel(pendingIntent); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("ex....."+e); 
      } 

      Calendar calendar = Calendar.getInstance(); 

      calendar.setTimeInMillis(System.currentTimeMillis()); 

      calendar.add(Calendar.SECOND, 10); 

      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),10000, pendingIntent); 

      Toast.makeText(MainActivity.this, "Start Alarm", Toast.LENGTH_LONG).show(); 

     } 
    }); 


    btn2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      pendingIntent = PendingIntent.getService(MainActivity.this, 7778, myIntent, 0); 
      try { 
       alarmManager.cancel(pendingIntent); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       System.out.println("ex....."+e); 
      } 
      MainActivity.this.stopService(myIntent); 
      Toast.makeText(MainActivity.this, "Cancel!", Toast.LENGTH_LONG).show(); 
     } 
    }); 
+0

это работа! спасибо дорогой –

+0

проголосуйте за плз .. если его полезно ... так что другие могут использовать слишком –

+0

Жаль, что я новый, моя репутация 0. –

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