2011-10-17 5 views
0

シンプルコード:onStop後にプロセスを強制終了しないでください。

public class ZSEEActivity extends TabActivity { 
private WebView webview ; 
private WebView webviewtwo; 
private TabHost mTabHost; 
private int a; 


protected void onStart() { 
    super.onStart(); 
    // The activity is about to become visible. 
} 
protected void onStop() { 
    super.onStop(); 
    // The activity is about to become visible. 
} 
protected void onRestart() { 
    super.onRestart(); 
} 
protected void onDestroy(){ 
    super.onDestroy(); 
} 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    final Activity activity = this; 


    mTabHost = getTabHost(); 

    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("Zastępstwa").setContent(R.id.tab1)); 
    mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("Plan Lekcji").setContent(R.id.tab2)); 
    mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("O programie").setContent(R.id.tab3)); 



    webview = (WebView) findViewById(R.id.webView1); 
    webviewtwo = (WebView) findViewById(R.id.webView2); 
    final WebSettings webviewtwoSettings = webviewtwo.getSettings(); 
     if (savedInstanceState != null){ 
      webview.restoreState(savedInstanceState.getBundle("stateone")); 
      webviewtwo.restoreState(savedInstanceState.getBundle("statetwo")); 
      webviewtwoSettings.setTextSize(TextSize.LARGER); 
      mTabHost.setCurrentTab(savedInstanceState.getInt("CURRENT_TAB")); 

     } 
     else{ 
      webview.loadUrl("http://zsee.bytom.pl/ogloszenia.php"); 
      webviewtwo.loadUrl("http://zsee.bytom.pl/plannew/index.html"); 
      webviewtwoSettings.setTextSize(TextSize.LARGER); 
      mTabHost.setCurrentTab(0); 
     } 


    webview.setWebViewClient(new WebViewClient() { 
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
       String summary = "<html><body><meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" ><center>Coś się zepsuło :(</center></body></html>"; 
       webview.loadData(summary, "text/html","utf-8"); 
      Toast.makeText(activity, "O nie! " + description, Toast.LENGTH_SHORT).show(); 
      } 
     }); 

    webviewtwo.setWebViewClient(new WebViewClient() { 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
      String summary = "<html><body><meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" ><center>Coś się zepsuło :(</center></body></html>"; 
      webviewtwo.loadData(summary, "text/html","utf-8"); 
      webviewtwoSettings.setTextSize(TextSize.NORMAL); 
     Toast.makeText(activity, "O nie! " + description, Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    } 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main, menu); 
    return true; 
} 

protected void onSaveInstanceState(Bundle outState) { 
    Bundle outStateone = new Bundle(); 
    Bundle outStatetwo = new Bundle(); 
    webview.saveState(outStateone); 
    webviewtwo.saveState(outStatetwo); 


    outState.putBundle("stateone", outStateone); 
    outState.putBundle("statetwo", outStatetwo); 
    outState.putInt("CURRENT_TAB", mTabHost.getCurrentTab()); 
} 



public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
    case R.id.item1: 
     final AlertDialog alertdialog= new AlertDialog.Builder(this).create(); 
     alertdialog.setTitle("O Programie"); 
     alertdialog.setMessage("Zmiany w 1.0.1: \n-Obsługa planu z dnia 17.10.2011\n-Drobne Poprawki"); 
     alertdialog.setButton("Fajno", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       alertdialog.cancel(); 
      } 
     }); 
     alertdialog.show(); 
     return true; 
    case R.id.item2: 
     finish(); 
    case R.id.item3: 
     if(mTabHost.getCurrentTab() == 0){ 
     webview.loadUrl("http://zsee.bytom.pl/ogloszenia.php"); 
     } 
     else if(mTabHost.getCurrentTab() == 1) 
     { 
     webviewtwo.loadUrl("http://zsee.bytom.pl/plannew/index.html"); 
     } 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 
} 

今私の問題。私はバックボタンを押すとonStop()コードが実行され、onDestroyが実行されます。どのように私はアプリを殺すことはできませんか?私はバックグラウンドでこのアプリをしたいです。今すぐ戻るボタンを押してアプリを開くと、すべてのデータが再びダウンロードされ、webviewに読み込まれます。 Sooはこのプロセスをバックグラウンドでどのように機能させるのですか?

私haotic英語のため申し訳ありません

:)

Sierran

答えて

2

Android serviceを、アクティビティではなくバックグラウンドで実行するために使用します。

Broadcast receiverを使用して、サービスからアクティビティを呼び出します。あなたの背景仕事が終わったとき。

Android - Service

そして、あなたはいくつかの小さなをしたいならば、ちょうどoverride onKeyDown()

@Override  
public boolean onKeyDown(int keyCode, KeyEvent event) 
    {   
    if (keyCode == KeyEvent.KEYCODE_BACK) 
     {    
    // put your stuff here or just block the back button for perticular activity    
      return true;   
     }   
    return super.onKeyDown(keyCode, event); 
    } 
+0

は、私はちょうどhomebuttonのように彼の活動を変更... completly戻るボタンを無効にしたくありません。オペラミニのような。ノーマリーアプリはバックグラウンドにありますが、アンドロイドにはラムがないとオペラのプロセスが殺されます。 yea ..英語ができない;> – Sierran

+0

そのためにサービスを実装する必要があります:-) – user370305

0

あなたがバックグラウンドで何かをしたいと、多かれ少なかれ、すべての時間を実行していることがそれを必要とする場合、私はServiceを使用することをお勧めします。ここServiceドキュメントをチェックアウト:

http://developer.android.com/reference/android/app/Service.html

あなたのケースでの代替は、ウェブサイトのローカルキャッシュを作成することです。

関連する問題