【问题标题】:Android Execute Asyntask within another class from another classAndroid在另一个类的另一个类中执行异步任务
【发布时间】:2014-04-03 18:26:18
【问题描述】:

我有一个类,其中还有一个扩展 AsyncTask 的类。作为,

public class Dashboard extends Activity {
 -------------
 --------------
 --------------
  public class getUnreadMessageCount  extends AsyncTask<String, String, JSONObject> {
    protected JSONObject doInBackground(){
     *********some database stuff************
    }
    protected void onPostExecute(JSONObject json) {
       count = Integer.parseInt(json.getString("messsage_count"));
       // Set Text to the textview
       messageCount.setText(count); 
    }

  }
}

现在我正在使用 GCMIntentService 类进行通知。如何调用并执行下面的getUnreadMessageCount

private void sendNotification(String content_id, int type, String msg) {

}

我试过了

private void sendNotification(String content_id, int type, String msg) {
    Dashboard dashboard = new Dashboard;
    dashboard.Dashboard dashboard---- 
}

但它不起作用。我该如何解决这个问题。

【问题讨论】:

  • getUnreadMessageCount 为什么你调用你的 AsyncTask 就像它是一个方法名一样?
  • 好吧,我的知识有点少。

标签: android class android-asynctask


【解决方案1】:

我在这里看到的是非常糟糕的风格,而不是根据 Java-Code-Conventions。您将class 命名为method。在java中,一般所有的类名都用大写字母写,应该是名词

public class getUnreadMessageCount  extends AsyncTask

应该被调用(至少):

public class GetUnreadMessageCount  extends AsyncTask

或者更好:

// make clear it is an async task
public class GetUnreadMessageCountTask  extends AsyncTask

这是AsyncTask的启动方法:

private void sendNotification(String content_id, int type, String msg) {
     new GetUnreadMessageCountTask().execute();
}

execute(...) 方法也可以采用 参数,具体取决于您对 AsyncTask 的规范。有关 AsyncTask 的一般说明,请查看此处:How to use AsyncTask

【讨论】:

  • 我确实按照您的建议将类名更改为 GetUnreadMessageCount。但我只能从 .我不能从任何其他类中调用它。
  • 如果你想从另一个类调用它,为 GetUnreadMessageCount 类创建一个单独的文件,然后在你需要的地方导入它。
  • 是的,但是如果我需要访问布局,我需要扩展视图,但是如果我使用 AsyncTask 扩展一个类,我该怎么做。如果你看到我的 Class with AsyncTask 我已经实现了count = Integer.parseInt(json.getString("messsage_count")); // Set Text to the textview messageCount.setText(count);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 2018-01-06
  • 2018-03-30
  • 2020-10-15
  • 2017-08-21
  • 1970-01-01
相关资源
最近更新 更多