【问题标题】:Android - Starting a thread from a widget View classAndroid - 从小部件视图类启动线程
【发布时间】:2014-03-26 23:16:29
【问题描述】:

所以我有一个看法:

public class RadialMenuWidget extends View 

我想从哪里开始一个线程,就像我从一个活动开始一样

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

但我在“DownloaderThread(UpdateActivity,...”这一行更具体地在活动名称 (UpdateActivity) 上收到消息“预期表达式”,即使我在小部件中导入了活动。

我可以做些什么来避免这种情况,同时仍然能够调用线程。

我的想法是,我使用 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
    }
...
}

请帮忙。

谢谢

【问题讨论】:

  • “DownloaderThread”的签名是什么。 UpdateActivity 是名称而不是参考。
  • 我添加了更多代码(已编辑),以便您更好地查看。请解释我应该做什么以及为什么。谢谢
  • 确实,我曾经从 UpdateActivity 调用 DownloaderThread,但现在我想在这个 Activity 中添加 RadialMenuWidget 并从它的菜单项单击调用下载器(位于 RadialMenuWidget 类内...
  • 最好把Thread放在Activity中,使用像“onClick”这样的回调来启动它。
  • 就像我说的,这就是现在的方式(活动内的onclick),但我想通过点击菜单(RadialMenuWidget)github.com/strider2023/Radial-Menu-Widget-Android来调用它,因为我开始将项目更改为使用小部件,从使用径向菜单跳转到内部带有按钮的空活动看起来并不酷

标签: android android-widget


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多