我有活動,即啓動/停止服務。還有一個服務,它有一個循環。我目前正試圖阻止我的主要活動的服務。我嘗試了很多變體,但都沒有調用onDestroy:/。任何幫助,想法或教導將不勝感激。 :)從我的主要活動從活動中停止服務循環
部分,我嘗試用對話來停止服務:
private void AlertDialog() {
new AlertDialog.Builder(this)
.setTitle("Delete entry")
.setMessage("Are you sure?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
stopService(intent);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.show();
服務:
public class SensMessageService extends Service{
public final String APP = "Ultimator";
public final String PREF_IN_USE = "inuse";
public final String PREF_TOTAL_MESSAGES = "totalmes";
public final String PREF_LEFT_MESSAGES = "leftmes";
public final String MESSAGE_BODY = "sms_body";
public final String MESSAGE_RECEIVER = "sms_receiver";
public final String MESSAGE_REPEATS = "sms_repeats";
public final String TAG = "SensMessageService";
private IBinder ibinder;
private SharedPreferences prefrences;
@Override
public IBinder onBind(Intent arg0) {
return this.ibinder;
}
public class LocalBinder extends Binder{
SensMessageService getBinder(){
return SensMessageService.this;
}
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
return super.onUnbind(intent);
}
@Override
public void unbindService(ServiceConnection conn) {
// TODO Auto-generated method stub
super.unbindService(conn);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
stopSelf();
Toast.makeText(getApplicationContext(), "Stopped", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intentas, int startId) {
final Intent intent = intentas;
SmsManager smsManager = SmsManager.getDefault();
int repeat = Integer.parseInt(intent.getStringExtra(MESSAGE_REPEATS));
String sendTo = intent.getStringExtra(MESSAGE_RECEIVER);
String myMessage = intent.getStringExtra(MESSAGE_BODY);
for (int i=0; i<repeat; i++) {
smsManager.sendTextMessage(sendTo, null, myMessage, null, null);
}
super.onStart(intent, startId);
}
}
我想是的onDestroy不被稱爲:/,因爲我沒有看到烤麪包
UPDATE:
我添加了一個線程,但不知何故,因爲你使用getApplicationContext()
它不會打印出
@Override
public void run() {
try {
while(true) {
sleep(1000);
System.out.println("fff");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
也請發表您的服務代碼。 –
也從'onDestroy'中刪除'stopself'。在onDestroy中意味着服務已經停止。所以調用'stopself'不起作用。 – Sunny
它看起來像onStart循環將花費幾分之一秒完成。您確定服務尚未停止(完成)到您嘗試阻止您的活動時? – Tenfour04