android 应用程序没有响应使用线程
android app not responding with using thread
我实现了一个 UI 的程序。在 UI 我有 2 个按钮(开始和结束)。当我在我的应用程序中单击开始按钮我的服务时 运行,然后单击完成按钮我的服务完成。
在我的服务中,我连接到 xmpp 服务器,当网速高时我没有任何问题,但当网速低时,连接 xmpp server
和我的 UI 需要很长时间什么都不做就崩溃了。我在线程中连接到 xmpp 服务器。
我的代码是:
public class FirstAct extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
btnStart.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
startService(new Intent(act, MainActivity.class));
}});
btnEnd.setOnClickListener( new OnClickListener() {
@Override
public void onClick( View v ) {
stopService(new Intent(act, MainActivity.class));
}});
}
}
//------------------------
public class MainService extends Service {
@Override
public void onStart(Intent intent, int startId) {
....
toastHandler2.sendEmptyMessage(0);
....
}
private final Handler toastHandler = new Handler() {
@SuppressWarnings({ "null","unused" })
@Override
public void handleMessage(android.os.Message msg){
try{
connectToXmppServer();
}catch(Exception e){
}
}
};
当ConnectToXMPP耗时很长时,所有程序都没有崩溃,我该怎么办???
请帮帮我
我用这个线程而不是 Handler
解决了我的问题:
void runInBackground() {
new Thread(new Runnable() {
@Override
public void run() {
connectToXmppServer();
}
}).start();
}
我实现了一个 UI 的程序。在 UI 我有 2 个按钮(开始和结束)。当我在我的应用程序中单击开始按钮我的服务时 运行,然后单击完成按钮我的服务完成。
在我的服务中,我连接到 xmpp 服务器,当网速高时我没有任何问题,但当网速低时,连接 xmpp server
和我的 UI 需要很长时间什么都不做就崩溃了。我在线程中连接到 xmpp 服务器。
我的代码是:
public class FirstAct extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
btnStart.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
startService(new Intent(act, MainActivity.class));
}});
btnEnd.setOnClickListener( new OnClickListener() {
@Override
public void onClick( View v ) {
stopService(new Intent(act, MainActivity.class));
}});
}
}
//------------------------
public class MainService extends Service {
@Override
public void onStart(Intent intent, int startId) {
....
toastHandler2.sendEmptyMessage(0);
....
}
private final Handler toastHandler = new Handler() {
@SuppressWarnings({ "null","unused" })
@Override
public void handleMessage(android.os.Message msg){
try{
connectToXmppServer();
}catch(Exception e){
}
}
};
当ConnectToXMPP耗时很长时,所有程序都没有崩溃,我该怎么办???
请帮帮我
我用这个线程而不是 Handler
解决了我的问题:
void runInBackground() {
new Thread(new Runnable() {
@Override
public void run() {
connectToXmppServer();
}
}).start();
}