2011-12-07 23 views
0

アクティビティの開始時に非同期タスクを実行するにはどうすればよいですか?約7つのアクティビティがあります。私は非同期タスクを起動するたびに実行し、アクティビティが終了するとキャンセルする必要があります。アクティビティの開始時にタスクを実行

public MyApp extends Application{ 
    public void onCreate(){super.onCreate();} 
} 

1つの明白な方法は、すべてのアクティビティのonCreateに入れることですが、あまりDRYではありません。他の方法はありますか?アプリケーションを作成すると、Toast.makeTextを実行できません。なぜなら、利用可能なアクティビティはないからです...

答えて

1

まず、お客様のコードでは、onCreate-Application Classの方法を使用しています。一般的にここではやってはいけませんが、Activityクラスを使用してください。アプリケーションとアクティビティの違いを認識しておく必要があります。これはAndroidの基本事項であるため、アクティビティライフサイクルをよく理解しておく必要があります。

すべてのアクティビティの一般的なタスクについては、おそらく抽象的なBaseActivityを作成し、そこに共通/共有のものを実装し、このクラスから継承する必要があります。しかし、いくつかのアクティビティが同時にインスタンス化される可能性があるので、使用する右ハンドラは実際にどのような動作を実現するかによって異なります。再び:アンドロイドのライフサイクルがどのように機能し、どのようにアクティビティを管理しているのか、何か問題が発生する可能性があるかを理解してください。

0

タスクをホストし、それぞれをバインドするサービスを検討しましたかあなたの活動の 'OnCreate

+0

これはあなたの活動のそれぞれにあなたの方法を実装と同じです – Amit

+0

...私もその方法について読ん、しかし、私は、私はアプリの生活の中で一度だけタスクを開始する必要がある解決策を見つけることを試みていました'OnCreate'。 – Ramseys

+0

また、それぞれのアクティビティでメソッドが同じであれば、アクティビティから継承した独自のクラスを作成し、タスクで 'OnCreate'をオーバーライドし、このクラスから各アクティビティを継承できます。 – Ramseys

関連する問題