2010-01-12 28 views
0

爲了學習如何使用AlarmManager,我創建了一個由單個按鈕組成的活動 。當按鈕被按下時, 活動會創建一個Intent,並在未來3秒內將其加載到AlarmManager中,然後結束。AlarmManager和失敗的PendingIntent

所以活動打開,用戶按下按鈕,活動關閉,3秒鐘後 打開,重複。

問題是不是開放活動3秒後我得到一個錯誤 : 「 [myappname]意外停止的應用程序,請再次嘗試 。」除了我稱呼Toast而已,這工作。

下面是按鈕的代碼:

thanksButton.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view) { 
       setResult(RESULT_OK); 
       Intent intent = new Intent(myappname.this, 
myappnameBroadcastReceiver.class); 
       PendingIntent appIntent = PendingIntent.getBroadcast 
(myappname.this, 0, intent, 0); 
       Calendar calendar = Calendar.getInstance(); 
       calendar.setTimeInMillis(System.currentTimeMillis()); 
       calendar.add(Calendar.SECOND, 3); 
       AlarmManager am = (AlarmManager)getSystemService 
(ALARM_SERVICE); 
       am.set(AlarmManager.RTC, calendar.getTimeInMillis(), 
appIntent); 

       finish(); 
       } 

     }); 

這裏的廣播接收器:

package com.myappname; 

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

public class myappnameBroadcastReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
         context.startActivity(new Intent(context, myappname.class)); 
     } 
} 

,這裏是從manifest.xml中的線

 <receiver 
       android:name=".myappnameBroadcastReceiver" 
       android:process=":remote"> 
     </receiver> 

回答

0

So activity opens, user pushes button, activity closes, 3 seconds later activity opens, repeat.

你不需要任何服務如果你只是想在鬧鈴響起時開始你的活動,那麼這種情況就會惡化。創建一個啓動你的活動的PendingIntent,就是這樣。在我的代碼中試試這個活動課程 - MyActivity

Intent intent = new Intent(MyActivity.this, MyActivity.class); 
PendingIntent appIntent = 
     PendingIntent.getActivity(MyActivity.this, 0, intent, 0); 
相關問題