2011-01-23 5 views
0

私は非常に単純な機能を持つアンドロイドウィジェットを持っています。ウィジェットは、単にアクティビティを起動し、アクティビティを実行し、トーストをポップし、アクティビティを終了します。ウィジェットからバックグラウンドアクティビティを起動するには?

迷惑なことは、ウィジェットがホーム画面で押されると、画面が開いたり閉じたりすると、画面がちらつきます。このフリッカーを避けるために、バックグラウンドからアクティビティを開始する方法はありますか?私はATKウィジェットに似た何かをしたいと思っています。これは、すべてのバックグラウンドプロセスを閉じた後にトーストをポップアップさせるだけです。

PendingIntentの代わりに1つの関数を実行することができれば、それは間違いなく機能します。ありがとう!

答えて

1

私は最終的に、アクティビティの代わりにサービスを実装しました。サービスはバックグラウンドで実行され、終了すると停止します。 PendingIntentは、単にPendingIntentのgetService()メソッドを使用してサービスを起動します。

0

私はApplicationクラスを使ってこのようなことをしています。自分自身を宣言する必要があります。 MyApplicationクラス(Androidのマニフェストで宣言する必要があります)と作成MyApplicationを中にちょうど別のスレッドを起動します。

public class MyApplication() 
{ 

    // only lazy initializations here! 
    public MyApplication() 
    { 
     super(); 
    } 


    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 
     Log.d(TAG, "Starting MyApplication"+this.toString()); 
     Thread myThread=new MyThread(); 
     myThread.start(); 
    } 
} 

だから、最後に、あなたはどんな活動が含まれていない「バックグラウンド」アプリケーションを持っています。あなたのスレッドが生きている間、アプリケーションは生き残ります。これらのスレッドから、必要なものに応じて、たとえばポップアップウィンドウ、トースト、アクティビティなど、必要なものを開始することができます。

+0

これは、アクティビティからバックグラウンドでメソッドを起動する必要がある場合に機能しますが、OnClickPendingIntentメソッドでインテントを起動する必要があるという問題があります。私の質問は、 "OnClickPendingIntentメソッドを使ってバックグラウンドインテントを起動する方法はありますか?" –

1

私は非常にだと知っていますが、私は同様の問題があり、サービスを利用したくありませんでした。

あなたの活動は非常に迅速である場合、あなたのマニフェストを変更し、あなたのウィジェットが起動される活動にこれを挿入するのに十分である、

android:theme="@android:style/Theme.Translucent.NoTitleBar" 

あなたの活動は何のちらつきが見られないことになるので、透明になります。この方法そして、それは非常に速く、それは途中で取得しません。

これは、あなたのアクティビティが速い場合にのみ使用できることに注意してください。そうしないと、フリーズ効果が発生します。

関連する問題