2011-01-23 28 views
0

我有一個非常簡單的功能的Android小部件。小部件只是在按下時啓動活動,在活動中運行,彈出烤麪包並關閉活動。如何從小部件啓動後臺活動?

惱人的是,當在主屏幕上按下小部件時,屏幕會在打開和關閉活動時閃爍。有沒有辦法從後臺啓動活動,以避免這種閃爍?我正在尋找類似於ATK小部件的東西,它在關閉所有後臺進程之後就會彈出一個敬酒。

如果可以只運行一個函數來代替PendingIntent,那肯定會起作用。謝謝!

回答

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方法啓動背景意圖?」 – 2011-01-23 22:14:38

1

我知道我是很晚,但我遇到了類似的問題,我不想使用服務。

如果你的活動是非常快的,它足以改變你的清單,並插入到你的widget將推出的活動這一點,

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

這樣,您的活動將是透明的因此沒有閃爍會看到而且,它速度很快,不會阻礙。

請注意,只有在您的活動較快時才能使用,否則會導致凍結效果。

相關問題