2011-01-23 66 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" 

这样,您的活动将是透明的因此没有闪烁会看到而且,它速度很快,不会阻碍。

请注意,只有在您的活动较快时才能使用,否则会导致冻结效果。

相关问题