Android - 从小部件View类启动一个线程

时间:2014-03-25 21:56:23

标签: android android-widget

所以我有一个观点:

public class RadialMenuWidget extends View 

我想从一个活动开始一个线程

String urlInput = "http://myserver.com/"+mynewfile;
DownloaderThread downloaderThread = new DownloaderThread(UpdateActivity, urlInput);
downloaderThread.start();

但是我收到了消息"表达预期"在这一行" DownloaderThread(UpdateActivity,..."更具体地说,在活动名称(UpdateActivity)上,即使我在Widget中导入了活动。

在能够调用线程的同时,我该怎么做才能避免这种情况。

我的想法是,我使用RadialMenuWidget,并在我测试的RadialMenuWidget类中查看按下了哪个菜单按钮,并根据它,我决定下一步该做什么。调用其他意图工作正常,但现在我想开始使用单独的线程下载文件(我可以通过常规活动调用onButtonClick)

修改 所以我的radialMenu有这样的结构:

public class RadialMenuWidget extends View {
...
   public interface RadialMenuEntry {
   ...
   }
   public RadialMenuWidget(Context context) {
   ...
   }
    @Override
    public boolean onTouchEvent(MotionEvent e) {
    ...
        if (state == MotionEvent.ACTION_UP) {
        ...
          if (menuEntries.get(i).getName() == "Update now") {
               String urlInput = "http://myhost.com/"+mynewfile;
               DownloaderThread downloaderThread = new DownloaderThread(this.UpdateActivity, urlInput);
               downloaderThread.start();
          }
        }
...

DownloadThread类看起来像这样:

public class DownloaderThread  extends Thread {

 public DownloaderThread(UpdateActivity inParentActivity, String inUrl)
    {
        downloadUrl = "";
        if(inUrl != null)
        {
            downloadUrl = inUrl;
        }
        parentActivity = inParentActivity;
    }

 @Override
    public void run()
    {
     // does the download
    }
...
}

请帮忙。

谢谢

1 个答案:

答案 0 :(得分:0)

我的解决方案最终是模仿使用图像的2按钮径向菜单。我使用图像作为按钮的背景,将它们放置在线性布局中,使用9个补丁图像并像以前一样调用线程onClick。所以我避免在这个视图中处理radialMenuWidget。 所以问题现在已经结束了。 我希望有一个java解决方案来解决这个问题,因为我是一个新手,并且渴望学习任何Android,但就是这样,我会用我的(丑陋的)解决方案来管理。