Java 我的应用程序在我取消后自动启动

Java 我的应用程序在我取消后自动启动,java,android,service,alarm,Java,Android,Service,Alarm,我设计了报警管理器,在特定时间内重复报警。但当我在秒(时间间隔)后取消单击方法时,服务会自动启动 我想激活按钮上的服务点击和重复间隔。重启后,手机也想开始服务 有什么想法吗 这是我的清单代码: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.alarm" android:versionCode="1" android:versionName="1.0" >

我设计了报警管理器,在特定时间内重复报警。但当我在秒(时间间隔)后取消单击方法时,服务会自动启动

我想激活按钮上的服务点击和重复间隔。重启后,手机也想开始服务

有什么想法吗

这是我的清单代码:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.alarm"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<uses-sdk
    android:minSdkVersion="8"

    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver android:name=".AlarmReceiver"  android:enabled="true"/>

   <receiver android:name=".BootCompleteReceiver" android:enabled="true" android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>
    <service android:name=".AlarmService" />
    </application>

</manifest>  
我的靴子收银员

public class BootCompleteReceiver extends BroadcastReceiver {   

@Override  
public void onReceive(Context context, Intent intent) {  

      if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {

          Toast.makeText(context, "Boot", Toast.LENGTH_LONG).show();

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    this.scheduleAlarms(context, calendar);
}  
}
private void scheduleAlarms(Context ctxt, Calendar c) {
    AlarmManager alarManager = (AlarmManager) ctxt.getSystemService(Context.ALARM_SERVICE);
     Intent i = new Intent(ctxt, AlarmService.class);
     PendingIntent pi = PendingIntent.getService(ctxt, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
     alarManager.setRepeating(AlarmManager.RTC,c.getTimeInMillis(),getInterval(), pi);
        }
private int getInterval(){
    int days = 0;
    int hours = 0;
    int minutes = 1;
    int seconds = 60;
    int milliseconds = 1000;
    int repeatMS = minutes*  seconds * milliseconds;
    return repeatMS;
}
}
我的主要活动是:

 public class MainActivity extends Activity {

private static final String TAG = "BANANEALARM";
public AlarmManager alarmManager;
Intent alarmIntent;
PendingIntent pendingIntent;
NotificationManager notificationManager;
Button btn,btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

    setContentView(R.layout.activity_main);

    btn=(Button)findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
            setAlarm();
            }
     });

    btn2=(Button)findViewById(R.id.stop_s);
    btn2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                stopservice();
            }
     });

}

public void stopservice()
 {
     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
       alarmManager.cancel(pendingIntent);

                // Tell the user about what we did.
                Toast.makeText(MainActivity.this , "Cancel!", Toast.LENGTH_LONG).show();
}


}

在您的
stopservice
方法中,code
alarmManager.cancel(PendingEvent)
,PendingEvent始终为空

试着替换

pendingent pendingent=pendingent

pendingent=pendingent

setAlarm
方法中


希望能有所帮助。

我想是因为您在setAlarm()中的挂起代码。谢谢。已解决。问题出在下一个答案上,正如你所说的,“好吧,我会把它作为ans,这样你就可以批准它了”。@AminH86我很乐意,你能接受我的答案吗?谢谢
 public class MainActivity extends Activity {

private static final String TAG = "BANANEALARM";
public AlarmManager alarmManager;
Intent alarmIntent;
PendingIntent pendingIntent;
NotificationManager notificationManager;
Button btn,btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

    setContentView(R.layout.activity_main);

    btn=(Button)findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
            setAlarm();
            }
     });

    btn2=(Button)findViewById(R.id.stop_s);
    btn2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                stopservice();
            }
     });

}

public void stopservice()
 {
     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
       alarmManager.cancel(pendingIntent);

                // Tell the user about what we did.
                Toast.makeText(MainActivity.this , "Cancel!", Toast.LENGTH_LONG).show();
public void triggerAlarm(View v){
    setAlarm();
}

public void setAlarm(){

    Intent intent = new Intent(this, AlarmReceiver.class);
    intent.setAction("com.example.alarm.ACTION");
    PendingIntent pendingIntent = PendingIntent
            .getBroadcast(MainActivity.this, 0, intent,
                    PendingIntent.FLAG_CANCEL_CURRENT);
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    AlarmManager alarm = (AlarmManager) MainActivity.this
            .getSystemService(Context.ALARM_SERVICE);
    alarm.cancel(pendingIntent);
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            getInterval(), pendingIntent);


    Log.d(TAG,"alarmStartTime: " );
}

private int getInterval(){
    int days = 0;
    int hours = 0;
    int minutes = 1;
    int seconds = 60;
    int milliseconds = 1000;
    int repeatMS = minutes*  seconds * milliseconds;
    return repeatMS;
}

@Override 
protected void onStart(){
    super.onStart();
    cancelNotifications();
    setAlarm();
}

public void cancelNotifications(){
    notificationManager.cancelAll();
}