【问题标题】:android asynchronous get foreground activityandroid异步获取前台活动
【发布时间】:2013-05-19 14:50:44
【问题描述】:

有没有我可以从 Android 上的 Java 调用的(线程安全的)方法 会给我一个后台任务的前台活动句柄吗? 我希望能够这样做,以便在顶部安全地张贴祝酒词 顶部窗口。

谢谢。

【问题讨论】:

    标签: android android-activity background-thread


    【解决方案1】:

    您不一定要获得前台 UI 活动的句柄才能显示 toast 消息。您可以从这样的后台线程执行此操作:

    runOnUiThread(new Runnable() {
        public void run() {
            // make toast, show toast
        }
    });
    

    【讨论】:

      【解决方案2】:

      创建您自己的扩展 AsyncTask 的类并将 Activity 作为参数之一传递:

      public class MyAsyncTask extends AsyncTask<String, String, String>{
      
          Activity mActivity;
      
          public MyAsyncTask (Activity mActivity){
              this.mActivity = mActivity;
          }
      
          @Override
          protected String doInBackground(String... urls) {
      
      
              return null;
      
          }
      
          @Override
          protected void onPostExecute(String result) {
      
          }
      
      }
      

      这样做应该允许您访问 Activity(假设它始终是前台;可能不一定是这种情况)。

      如果有可能不是前台 Activity,您可能只想使用:

      runOnUiThread(new Runnable() {
          public void run() {
              // Do UI stuff here
          }
      }); 
      

      但是,这不一定是线程安全的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-21
        • 2017-09-02
        • 1970-01-01
        • 2017-04-25
        • 1970-01-01
        • 2012-07-09
        相关资源
        最近更新 更多