Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么这个应用程序运行缓慢?_Android - Fatal编程技术网

Android 为什么这个应用程序运行缓慢?

Android 为什么这个应用程序运行缓慢?,android,Android,为什么我按play时该应用程序停止应答?它有时会显示“应用程序没有响应”,但如果我等待,它会工作 它在我的模拟器上运行得很好,但在我的手机(或我试过的任何其他手机)上都不行 它所做的只是播放流式声音 package comunicera.se; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; impor

为什么我按play时该应用程序停止应答?它有时会显示“应用程序没有响应”,但如果我等待,它会工作

它在我的模拟器上运行得很好,但在我的手机(或我试过的任何其他手机)上都不行

它所做的只是播放流式声音

package comunicera.se;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.ListActivity;
import android.content.Context;
import android.media.MediaPlayer;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Html;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ProgressBar;
import android.widget.TextView;

public class Godnattsaga extends ListActivity {
/** Called when the activity is first created. */


ListView list;
TextView spelandesSagqa;
//private ProgressDialog mProgressDialog;
 ProgressBar myProgressBar;
 int myProgress = 0;
 MediaPlayer mp = new MediaPlayer();
 String BASEURL = "http://godnattsaga.nu/sagor";
 public static long glCurrentSaga = 0;
 public static String giCode = null;
 int giAntalSagor = 0;
 int possWhenPaused = 0;
 ProgressBar myBufferProgressBar;
 TextView buffrarText;
 int progress;


public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    try
    {

        new Thread(buffer).start();
        String lsSagor = getFileFromUrl(BASEURL+"/gratisSagor.txt");

        final String[] laList = lsSagor.split("~");

        giAntalSagor = laList.length;

        //String saga = laList[0].replaceAll("#", "\n");
        String[] laSaga = laList[0].split("#");

        final String[] guiLaList = new String[giAntalSagor];
        for (int i = 0; i < giAntalSagor; i++)
        {
            guiLaList[i] = laList[i].replaceAll("#", "\n");
        }

        changeSpelandesSaga(laSaga[0]);

        setList (guiLaList);


        ListView list = getListView();
        list.setTextFilterEnabled(true);

        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                        String liCode = kop(id);

                        glCurrentSaga = id;
                        String[] laSaga = laList[(int) glCurrentSaga].split("#");
                        changeSpelandesSaga(laSaga[0]);
                    }
        });

        final Button button = (Button) findViewById(R.id.SpelaPause);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                selectDownloadOrPLay(laList);
            }
        });
        glCurrentSaga = 0;
        changeSpelandesSaga(laSaga[0]);



    }
    catch (Exception e) 
    {
        changeSpelandesSaga("Check your connection, are you in flightmode?");

    }
}

public void selectDownloadOrPLay(String[] laList) {
    String[] laSaga = laList[(int) glCurrentSaga].split("#");



    String url =  BASEURL+"/gratis/"+laSaga[0].replaceAll(" ", "_")+".mp3";

    if (mp.isPlaying())
    {
        mp.pause();
        possWhenPaused=mp.getCurrentPosition();
    }
    else if (possWhenPaused != 0)
    {
        mp.start();
    }
    else
    {       
        startSaga (url);
    }

}

private String kop(long id) 
{
    mp.pause();

    return "gratis";
}
public void setList (String[] laList)
{
    /*
     *
      final String[] lAList = new String[3];

    lAList[0] = "Saga 1 \n";
    lAList[1] = "Saga 2 \n";        
    lAList[2] = "Saga 3";

    setList (lAList);

     * 
     */


    setContentView(R.layout.main);
    ArrayAdapter<String> appointmentList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, laList);
    list=(ListView)findViewById(android.R.id.list);
    list.setAdapter(appointmentList);
}
public void changeSpelandesSaga(String sagaRubrik)
{
    possWhenPaused = 0;

    TextView t = new TextView(this); 
    t=(TextView)findViewById(R.id.spelandesSaga); 
    t.setText(Html.fromHtml("<b>"+sagaRubrik+"</b>"));
}


private void startSaga(String url) 
{
    try {
        mp.reset();
        mp.setDataSource(url);
        mp.prepare();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    mp.start();

    myProgressBar=(ProgressBar)findViewById(R.id.mProgressDialog);

    new Thread(myThread).start();
}

private Runnable myThread = new Runnable(){
    @Override
    public void run() {
        // TODO Auto-generated method stub
        while (myProgress<100){
            try{
                myHandle.sendMessage(myHandle.obtainMessage());
                Thread.sleep(1000);
            }
            catch(Throwable t){
            }
        }
    }

    Handler myHandle = new Handler(){

        double poss = 0.0;
        double sagaleng = 0.0;

        @Override
        public void handleMessage(Message msg) {
            //  TODO Auto-generated method stub

            poss = mp.getCurrentPosition();
            sagaleng = mp.getDuration();

            progress = (int) ((int)poss / sagaleng * 100);

            myProgress = progress;
            myProgressBar.setProgress(progress);

        }
    };

};
public static String getFileFromUrl(String url) 
{
    InputStream content = null;
    try 
    {
        HttpGet httpGet = new HttpGet(url);
        HttpClient httpclient = new DefaultHttpClient();
        // Execute HTTP Get Request
        HttpResponse response = httpclient.execute(httpGet);
        content = response.getEntity().getContent();
    }
    catch (Exception e) 
    {
        showNoConnection ();
        return null;
    }
    BufferedReader rd = new BufferedReader(new InputStreamReader(content), 4096);
    String line;
    StringBuilder sb =  new StringBuilder();
    try {
        while ((line = rd.readLine()) != null) {
                sb.append(line);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        rd.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return sb.toString();


}
public boolean isOnline() {
     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

     boolean connected = cm.getActiveNetworkInfo().isConnectedOrConnecting();

     return connected;

}

private static void showNoConnection() 
{

}
private Runnable buffer = new Runnable(){
    @Override
    public void run() {
        // TODO Auto-generated method stub
        while (myProgress<100){
            try{
                myHandle.sendMessage(myHandle.obtainMessage());
                Thread.sleep(1000);
            }
            catch(Throwable t)
            {
            }
        }
    }
        Handler myHandle = new Handler(){


        @Override
        public void handleMessage(Message msg) {
            //  TODO Auto-generated method stub
            //SpelaPause.setImageURI("pauseicon");
            myBufferProgressBar = (ProgressBar)findViewById(R.id.mBuffrar);
            TextView bufferText = (TextView)findViewById(R.id.buffrarText);

            if (mp.isPlaying() && progress == 0)
            {
                myBufferProgressBar.setVisibility(View.VISIBLE);
                bufferText.setVisibility(View.VISIBLE);
            }
            else
            {
                myBufferProgressBar.setVisibility(View.INVISIBLE);
                bufferText.setVisibility(View.INVISIBLE);
            }




        }
    };

};
package-comunicera.se;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入org.apache.http.HttpResponse;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.impl.client.DefaultHttpClient;
导入android.app.ListActivity;
导入android.content.Context;
导入android.media.MediaPlayer;
导入android.net.ConnectivityManager;
导入android.os.Bundle;
导入android.os.Handler;
导入android.os.Message;
导入android.text.Html;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ProgressBar;
导入android.widget.TextView;
公共类Godnattsaga扩展了ListActivity{
/**在首次创建活动时调用*/
列表视图列表;
TextView spelandesSagqa;
//private ProgressDialog mProgressDialog;
ProgressBar-myProgressBar;
int myProgress=0;
MediaPlayer mp=新的MediaPlayer();
字符串BASEURL=”http://godnattsaga.nu/sagor";
公共静态长glCurrentSaga=0;
公共静态字符串giCode=null;
int giAntalSagor=0;
int posswenpause=0;
ProgressBar myBufferProgressBar;
文本视图和文本;
智力进步;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
尝试
{
新线程(buffer.start();
字符串lsSagor=getFileFromUrl(BASEURL+“/gratisSagor.txt”);
最终字符串[]laList=lsSagor.split(“~”);
giAntalSagor=laList.length;
//字符串saga=laList[0]。replaceAll(“#”),“\n”);
字符串[]laSaga=laList[0]。拆分(“#”);
最终字符串[]Guillist=新字符串[giAntalSagor];
for(int i=0;i如果您的应用程序使用internet,则手机的连接可能比您的公司差。例如,如果它们都在同一个WiFi上运行,在同一点上,手机的连接可能比PC差。连接速度较慢-您必须等待
  • 阅读和-非常有用。例如,您将知道问题的名称-响应不良(而不是性能)-以便更好地进一步搜索。:-)

  • 所有长期任务都应该在单独的线程中运行,而不是在UI线程中。您可以从onCreate(..)方法调用getFileFromUrl(..),这会导致挂起


    我建议您不要在onCreate(..)方法中执行任何耗时的任务。通常,在onCreate(..)完成之前不会显示活动。

    您在onCreate中使用的是getFileFromUrl
    package comunicera.se;
    
    import java.io.IOException;
    
    import android.app.Activity;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class GodnattsagaTest1 extends Activity {
    
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final Button button = (Button) findViewById(R.id.SpelaPause);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
    
                selectDownloadOrPLay();
            }
        });
    }
    public void selectDownloadOrPLay() {
        Toast.makeText(getApplicationContext(), "Before ... ", Toast.LENGTH_SHORT).show();
        Saga.startSaga ();
        Toast.makeText(getApplicationContext(), "after ... ",   Toast.LENGTH_SHORT).show();
    }
    }
    class Saga 
    {
    static MediaPlayer mp = new MediaPlayer();
    static void startSaga() 
    {
    
        new Thread(spelaSaga).start();
    }
    
    private static Runnable spelaSaga = new Runnable(){
        @Override
        public void run() {
            // TODO Auto-generated method stub
    
    
                try {
                    mp.reset();
                    mp.setDataSource("http://godnattsaga.nu/sagor/gratis/Fisken.mp3");
                    mp.prepare();
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
    
                mp.start();
    
        }
    };
    
    
    
    }