0

アラーム マネージャーを使用して、定期的にアクティビティ内のコードを開始しようとしています。ここでさまざまな例を見てきましたが、実際には役に立ちませんでした。

テスト目的で、私がやろうとしているのは、10 秒間隔でトーストをポップアップすることだけですが、何も起こっていないようです。みんな助けてください!

私はマニフェストにこれを持っています(3つのアクティビティすべての宣言も):

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

OnCreate のメイン アクティビティからのコード:

        //
        // Setting up the Alarm Manager
        //
        Intent myIntent = new Intent(getBaseContext(), AlarmReceiver.class); 
        PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0,         myIntent, 0); 
        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
        Calendar calendar = Calendar.getInstance(); 
        calendar.setTimeInMillis(System.currentTimeMillis()); 
        calendar.add(Calendar.SECOND, 10); 
        long timerInterval = 10 * 1000;  
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), timerInterval, pendingIntent); 
        //finish();  

AlarmReceiver.java:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class AlarmReceiver extends BroadcastReceiver 
{

public void onReceive(Context context, Intent intent) 
    { 
    Toast.makeText(context," onRecieve() test" , Toast.LENGTH_LONG).show(); 
    Intent scheduledIntent = new Intent(context, MyService.class); 
    scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(scheduledIntent);
    } 
}

MyService.java:

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

public class MyService extends Service {


public void onCreate(Bundle savedInstanceState) {
     super.onCreate();


 Toast.makeText(getBaseContext(),"test message.",
            Toast.LENGTH_SHORT).show();

}
@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

}

4

2 に答える 2

0

を識別するを呼び出しstartActivity()ているため、アクティビティは表示されません。これに関連する警告が LogCat に表示されるはずです。IntentService

Logバックグラウンド操作をログに記録するために、クラスを介して LogCat を使用することをお勧めしますToast

于 2012-08-27T17:28:25.453 に答える
0

このコードをテストします。

private void establecerAlarmaClick(int when){
AlarmManager manager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(MainActivityAlarmita.this, MainActivityAlarmita.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivityAlarmita.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
((AlarmManager) getSystemService(ALARM_SERVICE)).set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + when * 1000, pendingIntent);
}
于 2016-03-18T16:01:19.653 に答える