我创建了以下后台线程:
public class loadSomeStuff extends AsyncTask <String, Integer, String>
{
@Override
protected String doInBackground(String... params) {
Intent i = new Intent("com.example.nadir_services.himan.class"); startActivity(i);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我还创建了一个按钮,我在其中调用此线程:
new loadSomeStuff().execute("");
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,每次按下这个按钮,它会创建一个新线程吗?如果是这样,为什么那么糟糕?我的意思是,会发生什么?
还有一个问题,我注意到这被称为"后台线程".这是否意味着有另一种方法来创建新线程?我只知道这种方式.
我正在android平台上编写一个服务器客户端.如果其中一个客户端发送其中一个消息,则首先将消息发送到服务器并将服务器发送给客户端.当接收方客户端收到消息时,我必须setContentView这样,我需要打开消息传递屏幕.但它将消息放在不同的线程中,并作为参考传递给我的活动类.
Thread my = new MyThread(this);
Run Code Online (Sandbox Code Playgroud)
并在线程类不能设置内容视图,因为给出一个错误ViewRoot CalledFromWrongThread,我该怎么办?
如何在ui线程上运行任务.我试图在ui线程上运行任务
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,
"Mytask finished",
Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud) 我似乎无法让它工作,我已经尝试了很多不同的东西,解析工作正常并返回一个arraylist中的标题列表,我无法让它们在ListView上查看.这是代码;
/**
* Created by Matt on 4/21/2015.
*/
public class Discussion_Fragment extends Fragment {
View rootview;
ListView listView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootview = inflater.inflate(R.layout.discussion_layout, container, false);
ArrayList<String> titles = new ArrayList<String>();
listView = (ListView) rootview.findViewById(R.id.listView1);
parse(getHTTP("https://www.reddit.com/r/DotA2.json?limit=10"));
for(int i=0;i<titles.size();i++){
titles.add(titles.get(i));
}
ArrayAdapter saAdapter = new ArrayAdapter(getActivity(), R.layout.discussion_layout, titles);
listView.setAdapter(saAdapter);
return rootview;
}
public static String getHTTP(String urlToRead) {
URL url;
HttpURLConnection conn;
BufferedReader rd;
String line;
String result = "";
boolean response …Run Code Online (Sandbox Code Playgroud)