0

いくら検索しても乗り越えられない。

私はAlarmManagerを持っており、X秒ごとにAsyncTaskを開始したいと思っています。

onReceiveがある別のファイルclass(Alarm.class)があります。その中に何を入れても、完全にアクティブになります。

今、私は問題を抱えています。メインスレッド/クラス(Onime)にAsyncTaskwhatsがあります。一部のコンテンツのダウンロードなど、多くのタスクを実行します。

ここで問題となるのは、別のクラスからそのAsyncTaskを開始するにはどうすればよいかということです。asycには静的を許可しないものがいくつか含まれていたため、残念ながら静的は機能しませんでした。なんらかのサービスで可能ですか

public class Alarm extends BroadcastReceiver 
{    
     @Override
     public void onReceive(Context context, Intent intent) 
     {   
         // Put here YOUR code.
         Log.d("alarminfo", "Alarm works!"); 


     }

 public void SetAlarm(Context context)
 {
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
     Intent i = new Intent(context, Alarm.class);
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
     Calendar time = Calendar.getInstance();
     time.setTimeInMillis(System.currentTimeMillis());
     time.add(Calendar.SECOND, 30);
     am.setRepeating(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), 1000*60*1, pi); // Millisec * Second * Minute
     Log.d("alarminfo", "Set alarm!"); 
 }

 public void CancelAlarm(Context context)
 {
     Log.d("alarminfo", "End alarm!"); 
     Intent intent = new Intent(context, Alarm.class);
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
     alarmManager.cancel(sender);
 }
}

それはアラームクラスです。

これがAsyncです(Onime.class(別のファイル)にあります:

class animeUpdator extends AsyncTask<ArrayList<Anime>, Integer, String> {

        class Connection implements Runnable {

            public void run () {
                    try {
                        URL url = new URL("http://xxx.com");
                        URLConnection urlConnection = url.openConnection();
                        BufferedReader bufferedReader = 
                            new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                        String line;
                        count = 1;
                        anime_list.clear();
                        while ((line = bufferedReader.readLine()) != null) {
                            parsingAnime(line);
                            count += 1;
                        }

                        bufferedReader.close();

                        MessageToMainThread(UPDATE_MAIN_GUI);

                    } catch(Exception e) {
                        Log.d("readInfo", e.toString()); 
                    }
                }

        }    
4

1 に答える 1

0

内部クラスのインスタンスを作成する必要がある場合は、その外部クラスから移動します。

Onime.animeUpdator.class.getConstructors()[0].newInstance(new Onime());

Javaクラス名は大文字で始める必要があることに注意してください。元。AnimeUpdator;

詳細については、この投稿これを参照してください。
またはコメントが指摘したように:

public class animeUpdator extends AsyncTask<ArrayList<Anime>, Integer, String> {
   public animeUpdator(){
          ...
   }

}

于 2012-12-17T00:44:59.960 に答える