Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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
Java onCreate一直被调用_Java_Android_Listview_Oncreate_Ion Koush - Fatal编程技术网

Java onCreate一直被调用

Java onCreate一直被调用,java,android,listview,oncreate,ion-koush,Java,Android,Listview,Oncreate,Ion Koush,我有一个简单的活动,通过ArrayAdapter将一些数据绑定到listView。我在我的桌上放了一杯酒。如果我把手机单独放几秒钟,祝酒词就会再次出现。我完全不知道这是怎么发生的。我在下面发布我的代码。也许我遗漏了一些我不知道的应用程序的组成部分 package com.eghdk.myapp.gui; import java.util.ArrayList; import android.annotation.TargetApi; import android.app.ListActivit

我有一个简单的活动,通过ArrayAdapter将一些数据绑定到listView。我在我的桌上放了一杯酒。如果我把手机单独放几秒钟,祝酒词就会再次出现。我完全不知道这是怎么发生的。我在下面发布我的代码。也许我遗漏了一些我不知道的应用程序的组成部分

package com.eghdk.myapp.gui;

import java.util.ArrayList;

import android.annotation.TargetApi;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.ion.Ion;
import com.eghdk.myapp.R;
import com.eghdk.myapp.adapters.MyAdapter;
import com.eghdk.myapp.util.AppUtil;
import com.eghdk.myapp.util.MyPost;

public class ActivityMyBlog extends ListActivity {
    MyAdapter adapter;
    ArrayList<MyPost> myPostArrayList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_blog);
        // Show the Up button in the action bar.
        setupActionBar();

        
        if (!AppUtil.isNetworkAvailable(this)) {
            Log.d("", "No network.");

        } else {
            Log.d("", "Connection detected. Will try to load from web.");
            loadDataFromWeb(1, 40);
        }

        if (adapter == null) {

            Toast.makeText(this, "adapter is null", 0).show();

        } else {
        }

    }

    @Override
    public Object getLastNonConfigurationInstance() {
        return (getListAdapter());
    }

    /**
     * Set up the {@link android.app.ActionBar}, if the API is available.
     */
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    private void setupActionBar() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            getActionBar().setDisplayHomeAsUpEnabled(true);
        }
    }

    // @Override
    // public boolean onCreateOptionsMenu(Menu menu) {
    // // Inflate the menu; this adds items to the action bar if it is present.
    // getMenuInflater().inflate(R.menu.activity_my_blog, menu);
    // return true;
    // }
    //
    // @Override
    // public boolean onOptionsItemSelected(MenuItem item) {
    // switch (item.getItemId()) {
    // case android.R.id.home:
    // // This ID represents the Home or Up button. In the case of this
    // // activity, the Up button is shown. Use NavUtils to allow users
    // // to navigate up one level in the application structure. For
    // // more details, see the Navigation pattern on Android Design:
    // //
    // //
    // http://developer.android.com/design/patterns/navigation.html#up-vs-back
    // //
    // NavUtils.navigateUpFromSameTask(this);
    // return true;
    // }
    // return super.onOptionsItemSelected(item);
    // }

    public void loadDataFromWeb(int page, int count) {

        myPostArrayList = new ArrayList<MyPost>();

        Ion.with(
                ActivityMyBlog.this,
                "http://myblog.com/api/get_posts/?page=" + page + "&count="
                        + count).asJsonObject()
                .setCallback(new FutureCallback<JsonObject>() {
                    @Override
                    public void onCompleted(Exception e, JsonObject result) {

                        //Edited this json code out for easier reading

                            myPost.setAttachmenUrl("http://myblog.com/img.png");
                            myPost.setPostTitle("Title");
                            myPost.setPostContent("Content");
                            myPost.setPostUrl("http://myblog.com/mypost");
                            myPost.setAuthorName("EGHDK");

                            myPostArrayList.add(myPost);

                        }
                        // END OF EVERY POST LOOP
                        Log.d("DEBUG", "4");
                        adapter = new MyAdapter(ActivityMyBlog.this,
                                R.layout.row, myPostArrayList);
                        setListAdapter(adapter);
                    }
                });

    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        Intent intent = new Intent(this, ActivityMyBlogDetail.class);
        intent.putExtra("atUrl", myPostArrayList.get(position)
                .getAttachmenUrl());
        intent.putExtra("content", myPostArrayList.get(position)
                .getPostContent());
        intent.putExtra("title", myPostArrayList.get(position)
                .getPostTitle());
        intent.putExtra("url", myPostArrayList.get(position).getPostUrl());

        startActivity(intent);
    }
}
以下是我的ArrayAdapter中的getView方法:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.row, parent, false);
        }
        ((TextView) convertView.findViewById(R.id.titleTextView)).setText(Html
                .fromHtml(postsArrayList.get(position).getPostTitle()));
        ImageView image = (ImageView) convertView
                .findViewById(R.id.postImageView);
            //Library to help with loading of images
        UrlImageViewHelper.setUrlDrawable(image, postsArrayList.get(position)
                .getAttachmenUrl());
        ((TextView) convertView.findViewById(R.id.subTextView)).setText(Html
                .fromHtml(postsArrayList.get(position).getAuthorName()));

        return convertView;
    }
更新: 我又拿了一部手机当秒表,试了两次

两次我都强制关闭了应用程序。
  • 我打开应用程序,屏幕在2分45秒后变暗,我得到了祝酒词

  • 我打开应用程序,48秒后屏幕上显示了祝酒词

  • 这是不对的。我确信android应用程序的生命周期不是这样工作的。一定是另一个问题。我在我的Android 4.4 LG G2上使用这个

    更新2: 插入日志

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        Log.d("STOP", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    }
    
    结果:

    01-20 04:42:51.792: D/STOP(4817): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    01-20 04:42:51.852: D/(4817): No network. Will use values from database.
    01-20 04:42:51.922: I/ActivityManager(4817): Timeline: Activity_idle id: android.os.BinderProxy@420465c0 time:15096283
    01-20 04:42:52.432: D/STOP(4817): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    01-20 04:42:52.512: D/(4817): No network. Will use values from database.
    

    它将始终显示toast,因为当应用程序启动时,适配器将始终
    null
    。我知道,但如果我将手机放在那里,屏幕将永远不会关闭或发生任何事情。它确实很暗,但我认为这不应该再次调用onCreate。AppUtil.isNetworkAvailable(此)如何工作?我更新了我的帖子,以显示我的静态isNetworkAvailable方法。当你将手机保持在理想状态几秒钟后,活动将进入
    onPause()
    状态,醒来后将调用
    onCreate()
    因此在调用onCreate()时,它将再次显示Toast。
    01-20 04:42:51.792: D/STOP(4817): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    01-20 04:42:51.852: D/(4817): No network. Will use values from database.
    01-20 04:42:51.922: I/ActivityManager(4817): Timeline: Activity_idle id: android.os.BinderProxy@420465c0 time:15096283
    01-20 04:42:52.432: D/STOP(4817): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    01-20 04:42:52.512: D/(4817): No network. Will use values from database.